<!DOCTYPE html>
<html lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>create_shape_model_3d [HALCON算子参考手册]</title>
<style type="text/css">
      body {
    color: #000000;
    background-color: #ffffff;
    margin: 0;
    font-family: Arial, Helvetica, sans-serif;
}

.body_main {
    margin-left: 35px;
    margin-right: 35px;
}

@media screen and (min-width:992px) {

    .body_main {
        margin-left: 10%;
        margin-right: 10%;
    }

    table.toctable {
        width: 80%
    }
}

@media screen and (min-width:1400px) {

    .body_main {
        margin-left: 15%;
        margin-right: 15%;
    }

    table.toctable {
        width: 70%
    }
}

body>div ul ul {
    margin-left: inherit;
}

a:link {
    color: #0044cc;
}

a:link,
a:visited {
    text-decoration: none;
}

a:link:hover,
a:visited:hover {
    text-decoration: underline;
}

th {
    text-align: left;
}

h1,
h2,
h3,
h4,
h5,
h6 {
    text-rendering: optimizeLegibility;
    color: #666666;
}

code {
    font-family: monospace,monospace;
}

h1 a.halconoperator {
    font-family: Arial, Helvetica, sans-serif;
    color: #666666;
}

h2 a.halconoperator {
    font-family: Arial, Helvetica, sans-serif;
    color: #666666;
}

hr {
    border: 0;
    border-top: solid 1px #f28d26;
}

.pre {
    display: block;
    padding-bottom: 1ex;
    font-family: monospace;
    white-space: pre;
}

pre {
    font-family: monospace, monospace;
    padding: 1ex;
    white-space: pre-wrap;
}

.toc {
    font-size: 80%;
    border-top: 1px dashed #f28d26;
    border-bottom: 1px dashed #f28d26;
    padding-top: 5px;
    padding-bottom: 5px;
}

.inv {
    margin: 0;
    border: 0;
    padding: 0;
}

.banner {
    color: #666666;
    padding-left: 1em;
}

.logo {
    background-color: white;
}

.keyboard {
    font-size: 80%;
    padding-left: 3px;
    padding-right: 3px;
    border-radius: 5px;
    border-width: 1px;
    border-style: solid;
    border-color: #f28d26;
    background-color: #f3f3f3;
}

.warning {
    margin-top: 2ex;
    margin-bottom: 1ex;
    padding: 10px;
    text-align: center;
    border: 1px solid;
    color: #bb0000;
    background-color: #fff7f7
}

.imprint {
    margin-top: 1ex;
    font-size: 80%;
    color: #666666;
}

.imprinthead {
    font-weight: bolder;
    color: #666666;
}

.indexlink {
    text-align: right;
    padding-bottom: 5px;
}

.postscript {
    margin-top: 2ex;
    font-size: 80%;
    color: #666666
}

.evenrow {
    background-color: #e7e7ef;
    vertical-align: top;
}

.oddrow {
    background-color: #f7f7ff;
    vertical-align: top;
}

.headrow {
    background-color: #97979f;
    color: #ffffff;
    vertical-align: top;
}

.logorow {
    vertical-align: top;
}

.error {
    color: red;
}

.var {
    font-style: italic
}

.halconoperator {
    font-family: monospace, monospace;
}

span.operator {
    font-family: monospace, monospace;
}

span.procedure {
    font-family: monospace, monospace;
}

span.operation {
    font-family: monospace, monospace;
}

span.feature {
    font-family: Arial, Helvetica, Homerton, sans-serif;
}

ul {
    padding-left: 1.2em;
}

li.dot {
    list-style-type: square;
    color: #f28d26;
}

.breadcrumb {
    font-size: 80%;
    color: white;
    background-color: #062d64;
    margin-bottom: 20px;
    padding-left: 35px;
    padding-right: 35px;
    padding-bottom: 15px;
}

.webbar {
    font-size: 80%;
    background-color: #dddddd;
    margin-top: 0px;
    margin-left: -35px;
    margin-right: -35px;
    margin-bottom: 0px;
    padding-top: 5px;
    padding-left: 35px;
    padding-right: 35px;
    padding-bottom: 5px;
}

.footer {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    border-top: 1px dashed #f28d26;
    font-size: 80%;
    color: #666666;
    padding-bottom: 8px;
}

.footer .socialmedia a {
    padding-left: 7px;
}

.socialmedia {
    padding-top: 10px;
}

.copyright {
    margin-top: 19px;
}

.breadcrumb a {
    color: #ffffff;
    border-bottom: 1px solid white;
}

.breadcrumb a:link:hover,
.breadcrumb a:visited:hover {
    text-decoration: none;
    border-bottom: none;
}

.heading {
    margin-top: 1ex;
    font-size: 110%;
    font-weight: bold;
    color: #666666;
}

.text {
    color: black;
}

.example {
    font-size: 80%;
    background-color: #f3f3f3;
    border: 1px dashed #666666;
    padding: 10px;
}

.displaymath {
    display: block;
    text-align: center;
    margin-top: 1ex;
    margin-bottom: 1ex;
}

.title {
    float: left;
    padding-top: 3px;
    padding-bottom: 3px;
}

.signnote {
    font-family: Arial, Helvetica, Homerton, sans-serif;
    font-size: 80%;
    color: #666666;
    font-weight: lighter;
    font-style: italic
}

.par {
    margin-bottom: 1.5em;
}

.parhead {
    text-align: right;
}

.parname {
    float: left;
}

.pardesc {
    font-size: 85%;
    margin-top: 0.5em;
    margin-bottom: 0.5em;
    margin-left: 2em;
}

.parcat {
    color: #666;
    font-weight: bold;
}

*[data-if=cpp],
*[data-if=c],
*[data-if=dotnet],
*[data-if=com],
*[data-if=python] {
    display: none;
}

.tabbar {
    text-align: right;
    border-bottom: 1px solid #f28d26;
    margin-bottom: 0.5em;
}

ul.tabs {
    padding-top: 3px;
    padding-bottom: 3px;
    margin-top: 10px;
    margin-bottom: 0;
    font-size: 80%
}

ul.tabs li {
    padding-top: 3px;
    padding-bottom: 3px;
    display: inline;
    overflow: hidden;
    list-style-type: none;
    margin: 0;
    margin-left: 8px;
    border-top: 1px solid #666;
    border-left: 1px solid #666;
    border-right: 1px solid #666;
}

ul.tabs li.active {
    border-left: 1px solid #f28d26;
    border-right: 1px solid #f28d26;
    border-top: 1px solid #f28d26;
    border-bottom: 1px solid #fff;
}

ul.tabs li.inactive {
    background-color: #eee;
}

ul.tabs li a {
    padding-left: 5px;
    padding-right: 5px;
    color: #666;
}

ul.tabs li a:link:hover {
    text-decoration: none;
}

ul.tabs li.inactive a {
    color: #666;
}

ul.tabs li.active a {
    color: black;
}

dl.generic dd {
    margin-bottom: 1em;
}

.pari {
    color: olive;
}

.paro {
    color: maroon;
}

.comment {
    font-size: 80%;
    color: green;
    white-space: nowrap;
}

table.grid {
    border-collapse: collapse;
}

table.grid td {
    padding: 5px;
    border: 1px solid;
}

table.layout {
    border: 0px;
}

table.layout td {
    padding: 5px;
}

table.table {
    border-collapse: collapse;
}

table.table td {
    padding: 5px;
    border-left: 0px;
    border-right: 0px;
}

table.table tr:last-child {
    border-bottom: 1px solid;
}

table.table th {
    padding: 5px;
    border-top: 1px solid;
    border-bottom: 1px solid;
    border-left: 0px;
    border-right: 0px;
}

.details_summary {
    cursor: pointer;
}

table.toctable {
    width: 100%;
}

table.toctable col:first-child {
    width: 20%;
}

table.toctable col:nth-last-child(2) {
    width: 8%;
}

table.altcolored tr:nth-child(even) {
    background-color: #f3f3f3;
}

    </style>
<!--OP_REF_STYLE_END-->
<script>
    <!--
var active_lang='hdevelop';function switchVisibility(obj,active_lang,new_lang)
{var display_style='inline';
for(var i=0;i<obj.length;i++)
{if(obj.item(i).getAttribute('data-if')==new_lang)
{obj.item(i).style.display=display_style;}
if(obj.item(i).getAttribute('data-if')==active_lang)
{obj.item(i).style.display='none';}}
return;}
function toggleLanguage(new_lang,initial)
{if(active_lang!=new_lang)
{var lis=document.getElementsByTagName('li');for(var i=0;i<lis.length;i++)
{if(lis.item(i).id=='syn-'+new_lang)
{lis.item(i).className='active';}
else
{lis.item(i).className='inactive';}}
var divs=document.getElementsByTagName('div');var spans=document.getElementsByTagName('span');switchVisibility(divs,active_lang,new_lang);switchVisibility(spans,active_lang,new_lang);if(!initial)
{setCookie("halcon_reference_language",new_lang,null,null);}
active_lang=new_lang;}
return;}
function setCookie(name,value,domain,exp_offset,path,secure)
{localStorage.setItem(name,value);}
function getCookie(name)
{return localStorage.getItem(name);}
function initialize()
{var qs=location.href.split('?')[1];var qs_lang_raw=location.href.split('interface=')[1];var qs_lang;if(qs_lang_raw)
{qs_lang=qs_lang_raw.split('#')[0];}
var cookie_lang=getCookie("halcon_reference_language");var new_lang;if((qs_lang=="hdevelop")||(qs_lang=="dotnet")||(qs_lang=="python")||(qs_lang=="cpp")||(qs_lang=="c"))
{new_lang=qs_lang;setCookie("halcon_reference_language",new_lang,null,null);}
else if((cookie_lang=="hdevelop")||(cookie_lang=="dotnet")||(cookie_lang=="python")||(cookie_lang=="cpp")||(cookie_lang=="c"))
{new_lang=cookie_lang;}
else
{new_lang="hdevelop";}
toggleLanguage(new_lang,1);return;}
-->

  </script>
</head>
<body onload="initialize();">
<div class="breadcrumb">
<br class="inv"><a href="index.html">目录</a> / <a href="toc_3dmatching.html">3D 匹配</a> / <a href="toc_3dmatching_shapebased.html">Shape-Based</a><br class="inv">
</div>
<div class="body_main">
<div class="tabbar"><ul class="tabs">
<li id="syn-hdevelop" class="active"><a href="javascript:void(0);" onclick="toggleLanguage('hdevelop')" onfocus="blur()">HDevelop</a></li>
<li id="syn-dotnet" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('dotnet')" onfocus="blur()">.NET</a></li>
<li id="syn-python" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('python')" onfocus="blur()">Python</a></li>
<li id="syn-cpp" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('cpp')" onfocus="blur()">C++</a></li>
<li id="syn-c" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('c')" onfocus="blur()">C</a></li>
</ul></div>
<div class="indexlink">
<a href="index_classes.html"><span data-if="dotnet" style="display:none;">类别</span><span data-if="cpp" style="display:none;">类别</span></a><span data-if="dotnet" style="display:none;"> | </span><span data-if="cpp" style="display:none;"> | </span><a href="index_by_name.html">算子列表</a>
</div>
<!--OP_REF_HEADER_END-->
<h1 id="sec_name">
<span data-if="hdevelop" style="display:inline;">create_shape_model_3d</span><span data-if="c" style="display:none;">T_create_shape_model_3d</span><span data-if="cpp" style="display:none;">CreateShapeModel3d</span><span data-if="dotnet" style="display:none;">CreateShapeModel3d</span><span data-if="python" style="display:none;">create_shape_model_3d</span> (算子名称)</h1>
<h2>名称</h2>
<p><code><span data-if="hdevelop" style="display:inline;">create_shape_model_3d</span><span data-if="c" style="display:none;">T_create_shape_model_3d</span><span data-if="cpp" style="display:none;">CreateShapeModel3d</span><span data-if="dotnet" style="display:none;">CreateShapeModel3d</span><span data-if="python" style="display:none;">create_shape_model_3d</span></code> — Prepare a 3D object model for matching.</p>
<h2 id="sec_synopsis">参数签名</h2>
<div data-if="hdevelop" style="display:inline;">
<p>
<code><b>create_shape_model_3d</b>( :  : <a href="#ObjectModel3D"><i>ObjectModel3D</i></a>, <a href="#CamParam"><i>CamParam</i></a>, <a href="#RefRotX"><i>RefRotX</i></a>, <a href="#RefRotY"><i>RefRotY</i></a>, <a href="#RefRotZ"><i>RefRotZ</i></a>, <a href="#OrderOfRotation"><i>OrderOfRotation</i></a>, <a href="#LongitudeMin"><i>LongitudeMin</i></a>, <a href="#LongitudeMax"><i>LongitudeMax</i></a>, <a href="#LatitudeMin"><i>LatitudeMin</i></a>, <a href="#LatitudeMax"><i>LatitudeMax</i></a>, <a href="#CamRollMin"><i>CamRollMin</i></a>, <a href="#CamRollMax"><i>CamRollMax</i></a>, <a href="#DistMin"><i>DistMin</i></a>, <a href="#DistMax"><i>DistMax</i></a>, <a href="#MinContrast"><i>MinContrast</i></a>, <a href="#GenParamName"><i>GenParamName</i></a>, <a href="#GenParamValue"><i>GenParamValue</i></a> : <a href="#ShapeModel3DID"><i>ShapeModel3DID</i></a>)</code></p>
</div>
<div data-if="c" style="display:none;">
<p>
<code>Herror <b>T_create_shape_model_3d</b>(const Htuple <a href="#ObjectModel3D"><i>ObjectModel3D</i></a>, const Htuple <a href="#CamParam"><i>CamParam</i></a>, const Htuple <a href="#RefRotX"><i>RefRotX</i></a>, const Htuple <a href="#RefRotY"><i>RefRotY</i></a>, const Htuple <a href="#RefRotZ"><i>RefRotZ</i></a>, const Htuple <a href="#OrderOfRotation"><i>OrderOfRotation</i></a>, const Htuple <a href="#LongitudeMin"><i>LongitudeMin</i></a>, const Htuple <a href="#LongitudeMax"><i>LongitudeMax</i></a>, const Htuple <a href="#LatitudeMin"><i>LatitudeMin</i></a>, const Htuple <a href="#LatitudeMax"><i>LatitudeMax</i></a>, const Htuple <a href="#CamRollMin"><i>CamRollMin</i></a>, const Htuple <a href="#CamRollMax"><i>CamRollMax</i></a>, const Htuple <a href="#DistMin"><i>DistMin</i></a>, const Htuple <a href="#DistMax"><i>DistMax</i></a>, const Htuple <a href="#MinContrast"><i>MinContrast</i></a>, const Htuple <a href="#GenParamName"><i>GenParamName</i></a>, const Htuple <a href="#GenParamValue"><i>GenParamValue</i></a>, Htuple* <a href="#ShapeModel3DID"><i>ShapeModel3DID</i></a>)</code></p>
</div>
<div data-if="cpp" style="display:none;">
<p>
<code>void <b>CreateShapeModel3d</b>(const HTuple&amp; <a href="#ObjectModel3D"><i>ObjectModel3D</i></a>, const HTuple&amp; <a href="#CamParam"><i>CamParam</i></a>, const HTuple&amp; <a href="#RefRotX"><i>RefRotX</i></a>, const HTuple&amp; <a href="#RefRotY"><i>RefRotY</i></a>, const HTuple&amp; <a href="#RefRotZ"><i>RefRotZ</i></a>, const HTuple&amp; <a href="#OrderOfRotation"><i>OrderOfRotation</i></a>, const HTuple&amp; <a href="#LongitudeMin"><i>LongitudeMin</i></a>, const HTuple&amp; <a href="#LongitudeMax"><i>LongitudeMax</i></a>, const HTuple&amp; <a href="#LatitudeMin"><i>LatitudeMin</i></a>, const HTuple&amp; <a href="#LatitudeMax"><i>LatitudeMax</i></a>, const HTuple&amp; <a href="#CamRollMin"><i>CamRollMin</i></a>, const HTuple&amp; <a href="#CamRollMax"><i>CamRollMax</i></a>, const HTuple&amp; <a href="#DistMin"><i>DistMin</i></a>, const HTuple&amp; <a href="#DistMax"><i>DistMax</i></a>, const HTuple&amp; <a href="#MinContrast"><i>MinContrast</i></a>, const HTuple&amp; <a href="#GenParamName"><i>GenParamName</i></a>, const HTuple&amp; <a href="#GenParamValue"><i>GenParamValue</i></a>, HTuple* <a href="#ShapeModel3DID"><i>ShapeModel3DID</i></a>)</code></p>
<p>
<code>void <a href="HShapeModel3D.html">HShapeModel3D</a>::<b>HShapeModel3D</b>(const HObjectModel3D&amp; <a href="#ObjectModel3D"><i>ObjectModel3D</i></a>, const HCamPar&amp; <a href="#CamParam"><i>CamParam</i></a>, double <a href="#RefRotX"><i>RefRotX</i></a>, double <a href="#RefRotY"><i>RefRotY</i></a>, double <a href="#RefRotZ"><i>RefRotZ</i></a>, const HString&amp; <a href="#OrderOfRotation"><i>OrderOfRotation</i></a>, double <a href="#LongitudeMin"><i>LongitudeMin</i></a>, double <a href="#LongitudeMax"><i>LongitudeMax</i></a>, double <a href="#LatitudeMin"><i>LatitudeMin</i></a>, double <a href="#LatitudeMax"><i>LatitudeMax</i></a>, double <a href="#CamRollMin"><i>CamRollMin</i></a>, double <a href="#CamRollMax"><i>CamRollMax</i></a>, double <a href="#DistMin"><i>DistMin</i></a>, double <a href="#DistMax"><i>DistMax</i></a>, Hlong <a href="#MinContrast"><i>MinContrast</i></a>, const HTuple&amp; <a href="#GenParamName"><i>GenParamName</i></a>, const HTuple&amp; <a href="#GenParamValue"><i>GenParamValue</i></a>)</code></p>
<p>
<code>void <a href="HShapeModel3D.html">HShapeModel3D</a>::<b>HShapeModel3D</b>(const HObjectModel3D&amp; <a href="#ObjectModel3D"><i>ObjectModel3D</i></a>, const HCamPar&amp; <a href="#CamParam"><i>CamParam</i></a>, double <a href="#RefRotX"><i>RefRotX</i></a>, double <a href="#RefRotY"><i>RefRotY</i></a>, double <a href="#RefRotZ"><i>RefRotZ</i></a>, const HString&amp; <a href="#OrderOfRotation"><i>OrderOfRotation</i></a>, double <a href="#LongitudeMin"><i>LongitudeMin</i></a>, double <a href="#LongitudeMax"><i>LongitudeMax</i></a>, double <a href="#LatitudeMin"><i>LatitudeMin</i></a>, double <a href="#LatitudeMax"><i>LatitudeMax</i></a>, double <a href="#CamRollMin"><i>CamRollMin</i></a>, double <a href="#CamRollMax"><i>CamRollMax</i></a>, double <a href="#DistMin"><i>DistMin</i></a>, double <a href="#DistMax"><i>DistMax</i></a>, Hlong <a href="#MinContrast"><i>MinContrast</i></a>, const HString&amp; <a href="#GenParamName"><i>GenParamName</i></a>, Hlong <a href="#GenParamValue"><i>GenParamValue</i></a>)</code></p>
<p>
<code>void <a href="HShapeModel3D.html">HShapeModel3D</a>::<b>HShapeModel3D</b>(const HObjectModel3D&amp; <a href="#ObjectModel3D"><i>ObjectModel3D</i></a>, const HCamPar&amp; <a href="#CamParam"><i>CamParam</i></a>, double <a href="#RefRotX"><i>RefRotX</i></a>, double <a href="#RefRotY"><i>RefRotY</i></a>, double <a href="#RefRotZ"><i>RefRotZ</i></a>, const char* <a href="#OrderOfRotation"><i>OrderOfRotation</i></a>, double <a href="#LongitudeMin"><i>LongitudeMin</i></a>, double <a href="#LongitudeMax"><i>LongitudeMax</i></a>, double <a href="#LatitudeMin"><i>LatitudeMin</i></a>, double <a href="#LatitudeMax"><i>LatitudeMax</i></a>, double <a href="#CamRollMin"><i>CamRollMin</i></a>, double <a href="#CamRollMax"><i>CamRollMax</i></a>, double <a href="#DistMin"><i>DistMin</i></a>, double <a href="#DistMax"><i>DistMax</i></a>, Hlong <a href="#MinContrast"><i>MinContrast</i></a>, const char* <a href="#GenParamName"><i>GenParamName</i></a>, Hlong <a href="#GenParamValue"><i>GenParamValue</i></a>)</code></p>
<p>
<code>void <a href="HShapeModel3D.html">HShapeModel3D</a>::<b>HShapeModel3D</b>(const HObjectModel3D&amp; <a href="#ObjectModel3D"><i>ObjectModel3D</i></a>, const HCamPar&amp; <a href="#CamParam"><i>CamParam</i></a>, double <a href="#RefRotX"><i>RefRotX</i></a>, double <a href="#RefRotY"><i>RefRotY</i></a>, double <a href="#RefRotZ"><i>RefRotZ</i></a>, const wchar_t* <a href="#OrderOfRotation"><i>OrderOfRotation</i></a>, double <a href="#LongitudeMin"><i>LongitudeMin</i></a>, double <a href="#LongitudeMax"><i>LongitudeMax</i></a>, double <a href="#LatitudeMin"><i>LatitudeMin</i></a>, double <a href="#LatitudeMax"><i>LatitudeMax</i></a>, double <a href="#CamRollMin"><i>CamRollMin</i></a>, double <a href="#CamRollMax"><i>CamRollMax</i></a>, double <a href="#DistMin"><i>DistMin</i></a>, double <a href="#DistMax"><i>DistMax</i></a>, Hlong <a href="#MinContrast"><i>MinContrast</i></a>, const wchar_t* <a href="#GenParamName"><i>GenParamName</i></a>, Hlong <a href="#GenParamValue"><i>GenParamValue</i></a>)  <span class="signnote">
            (
            Windows only)
          </span></code></p>
<p>
<code>void <a href="HShapeModel3D.html">HShapeModel3D</a>::<b>CreateShapeModel3d</b>(const HObjectModel3D&amp; <a href="#ObjectModel3D"><i>ObjectModel3D</i></a>, const HCamPar&amp; <a href="#CamParam"><i>CamParam</i></a>, double <a href="#RefRotX"><i>RefRotX</i></a>, double <a href="#RefRotY"><i>RefRotY</i></a>, double <a href="#RefRotZ"><i>RefRotZ</i></a>, const HString&amp; <a href="#OrderOfRotation"><i>OrderOfRotation</i></a>, double <a href="#LongitudeMin"><i>LongitudeMin</i></a>, double <a href="#LongitudeMax"><i>LongitudeMax</i></a>, double <a href="#LatitudeMin"><i>LatitudeMin</i></a>, double <a href="#LatitudeMax"><i>LatitudeMax</i></a>, double <a href="#CamRollMin"><i>CamRollMin</i></a>, double <a href="#CamRollMax"><i>CamRollMax</i></a>, double <a href="#DistMin"><i>DistMin</i></a>, double <a href="#DistMax"><i>DistMax</i></a>, Hlong <a href="#MinContrast"><i>MinContrast</i></a>, const HTuple&amp; <a href="#GenParamName"><i>GenParamName</i></a>, const HTuple&amp; <a href="#GenParamValue"><i>GenParamValue</i></a>)</code></p>
<p>
<code>void <a href="HShapeModel3D.html">HShapeModel3D</a>::<b>CreateShapeModel3d</b>(const HObjectModel3D&amp; <a href="#ObjectModel3D"><i>ObjectModel3D</i></a>, const HCamPar&amp; <a href="#CamParam"><i>CamParam</i></a>, double <a href="#RefRotX"><i>RefRotX</i></a>, double <a href="#RefRotY"><i>RefRotY</i></a>, double <a href="#RefRotZ"><i>RefRotZ</i></a>, const HString&amp; <a href="#OrderOfRotation"><i>OrderOfRotation</i></a>, double <a href="#LongitudeMin"><i>LongitudeMin</i></a>, double <a href="#LongitudeMax"><i>LongitudeMax</i></a>, double <a href="#LatitudeMin"><i>LatitudeMin</i></a>, double <a href="#LatitudeMax"><i>LatitudeMax</i></a>, double <a href="#CamRollMin"><i>CamRollMin</i></a>, double <a href="#CamRollMax"><i>CamRollMax</i></a>, double <a href="#DistMin"><i>DistMin</i></a>, double <a href="#DistMax"><i>DistMax</i></a>, Hlong <a href="#MinContrast"><i>MinContrast</i></a>, const HString&amp; <a href="#GenParamName"><i>GenParamName</i></a>, Hlong <a href="#GenParamValue"><i>GenParamValue</i></a>)</code></p>
<p>
<code>void <a href="HShapeModel3D.html">HShapeModel3D</a>::<b>CreateShapeModel3d</b>(const HObjectModel3D&amp; <a href="#ObjectModel3D"><i>ObjectModel3D</i></a>, const HCamPar&amp; <a href="#CamParam"><i>CamParam</i></a>, double <a href="#RefRotX"><i>RefRotX</i></a>, double <a href="#RefRotY"><i>RefRotY</i></a>, double <a href="#RefRotZ"><i>RefRotZ</i></a>, const char* <a href="#OrderOfRotation"><i>OrderOfRotation</i></a>, double <a href="#LongitudeMin"><i>LongitudeMin</i></a>, double <a href="#LongitudeMax"><i>LongitudeMax</i></a>, double <a href="#LatitudeMin"><i>LatitudeMin</i></a>, double <a href="#LatitudeMax"><i>LatitudeMax</i></a>, double <a href="#CamRollMin"><i>CamRollMin</i></a>, double <a href="#CamRollMax"><i>CamRollMax</i></a>, double <a href="#DistMin"><i>DistMin</i></a>, double <a href="#DistMax"><i>DistMax</i></a>, Hlong <a href="#MinContrast"><i>MinContrast</i></a>, const char* <a href="#GenParamName"><i>GenParamName</i></a>, Hlong <a href="#GenParamValue"><i>GenParamValue</i></a>)</code></p>
<p>
<code>void <a href="HShapeModel3D.html">HShapeModel3D</a>::<b>CreateShapeModel3d</b>(const HObjectModel3D&amp; <a href="#ObjectModel3D"><i>ObjectModel3D</i></a>, const HCamPar&amp; <a href="#CamParam"><i>CamParam</i></a>, double <a href="#RefRotX"><i>RefRotX</i></a>, double <a href="#RefRotY"><i>RefRotY</i></a>, double <a href="#RefRotZ"><i>RefRotZ</i></a>, const wchar_t* <a href="#OrderOfRotation"><i>OrderOfRotation</i></a>, double <a href="#LongitudeMin"><i>LongitudeMin</i></a>, double <a href="#LongitudeMax"><i>LongitudeMax</i></a>, double <a href="#LatitudeMin"><i>LatitudeMin</i></a>, double <a href="#LatitudeMax"><i>LatitudeMax</i></a>, double <a href="#CamRollMin"><i>CamRollMin</i></a>, double <a href="#CamRollMax"><i>CamRollMax</i></a>, double <a href="#DistMin"><i>DistMin</i></a>, double <a href="#DistMax"><i>DistMax</i></a>, Hlong <a href="#MinContrast"><i>MinContrast</i></a>, const wchar_t* <a href="#GenParamName"><i>GenParamName</i></a>, Hlong <a href="#GenParamValue"><i>GenParamValue</i></a>)  <span class="signnote">
            (
            Windows only)
          </span></code></p>
<p>
<code><a href="HShapeModel3D.html">HShapeModel3D</a> <a href="HCamPar.html">HCamPar</a>::<b>CreateShapeModel3d</b>(const HObjectModel3D&amp; <a href="#ObjectModel3D"><i>ObjectModel3D</i></a>, double <a href="#RefRotX"><i>RefRotX</i></a>, double <a href="#RefRotY"><i>RefRotY</i></a>, double <a href="#RefRotZ"><i>RefRotZ</i></a>, const HString&amp; <a href="#OrderOfRotation"><i>OrderOfRotation</i></a>, double <a href="#LongitudeMin"><i>LongitudeMin</i></a>, double <a href="#LongitudeMax"><i>LongitudeMax</i></a>, double <a href="#LatitudeMin"><i>LatitudeMin</i></a>, double <a href="#LatitudeMax"><i>LatitudeMax</i></a>, double <a href="#CamRollMin"><i>CamRollMin</i></a>, double <a href="#CamRollMax"><i>CamRollMax</i></a>, double <a href="#DistMin"><i>DistMin</i></a>, double <a href="#DistMax"><i>DistMax</i></a>, Hlong <a href="#MinContrast"><i>MinContrast</i></a>, const HTuple&amp; <a href="#GenParamName"><i>GenParamName</i></a>, const HTuple&amp; <a href="#GenParamValue"><i>GenParamValue</i></a>) const</code></p>
<p>
<code><a href="HShapeModel3D.html">HShapeModel3D</a> <a href="HCamPar.html">HCamPar</a>::<b>CreateShapeModel3d</b>(const HObjectModel3D&amp; <a href="#ObjectModel3D"><i>ObjectModel3D</i></a>, double <a href="#RefRotX"><i>RefRotX</i></a>, double <a href="#RefRotY"><i>RefRotY</i></a>, double <a href="#RefRotZ"><i>RefRotZ</i></a>, const HString&amp; <a href="#OrderOfRotation"><i>OrderOfRotation</i></a>, double <a href="#LongitudeMin"><i>LongitudeMin</i></a>, double <a href="#LongitudeMax"><i>LongitudeMax</i></a>, double <a href="#LatitudeMin"><i>LatitudeMin</i></a>, double <a href="#LatitudeMax"><i>LatitudeMax</i></a>, double <a href="#CamRollMin"><i>CamRollMin</i></a>, double <a href="#CamRollMax"><i>CamRollMax</i></a>, double <a href="#DistMin"><i>DistMin</i></a>, double <a href="#DistMax"><i>DistMax</i></a>, Hlong <a href="#MinContrast"><i>MinContrast</i></a>, const HString&amp; <a href="#GenParamName"><i>GenParamName</i></a>, Hlong <a href="#GenParamValue"><i>GenParamValue</i></a>) const</code></p>
<p>
<code><a href="HShapeModel3D.html">HShapeModel3D</a> <a href="HCamPar.html">HCamPar</a>::<b>CreateShapeModel3d</b>(const HObjectModel3D&amp; <a href="#ObjectModel3D"><i>ObjectModel3D</i></a>, double <a href="#RefRotX"><i>RefRotX</i></a>, double <a href="#RefRotY"><i>RefRotY</i></a>, double <a href="#RefRotZ"><i>RefRotZ</i></a>, const char* <a href="#OrderOfRotation"><i>OrderOfRotation</i></a>, double <a href="#LongitudeMin"><i>LongitudeMin</i></a>, double <a href="#LongitudeMax"><i>LongitudeMax</i></a>, double <a href="#LatitudeMin"><i>LatitudeMin</i></a>, double <a href="#LatitudeMax"><i>LatitudeMax</i></a>, double <a href="#CamRollMin"><i>CamRollMin</i></a>, double <a href="#CamRollMax"><i>CamRollMax</i></a>, double <a href="#DistMin"><i>DistMin</i></a>, double <a href="#DistMax"><i>DistMax</i></a>, Hlong <a href="#MinContrast"><i>MinContrast</i></a>, const char* <a href="#GenParamName"><i>GenParamName</i></a>, Hlong <a href="#GenParamValue"><i>GenParamValue</i></a>) const</code></p>
<p>
<code><a href="HShapeModel3D.html">HShapeModel3D</a> <a href="HCamPar.html">HCamPar</a>::<b>CreateShapeModel3d</b>(const HObjectModel3D&amp; <a href="#ObjectModel3D"><i>ObjectModel3D</i></a>, double <a href="#RefRotX"><i>RefRotX</i></a>, double <a href="#RefRotY"><i>RefRotY</i></a>, double <a href="#RefRotZ"><i>RefRotZ</i></a>, const wchar_t* <a href="#OrderOfRotation"><i>OrderOfRotation</i></a>, double <a href="#LongitudeMin"><i>LongitudeMin</i></a>, double <a href="#LongitudeMax"><i>LongitudeMax</i></a>, double <a href="#LatitudeMin"><i>LatitudeMin</i></a>, double <a href="#LatitudeMax"><i>LatitudeMax</i></a>, double <a href="#CamRollMin"><i>CamRollMin</i></a>, double <a href="#CamRollMax"><i>CamRollMax</i></a>, double <a href="#DistMin"><i>DistMin</i></a>, double <a href="#DistMax"><i>DistMax</i></a>, Hlong <a href="#MinContrast"><i>MinContrast</i></a>, const wchar_t* <a href="#GenParamName"><i>GenParamName</i></a>, Hlong <a href="#GenParamValue"><i>GenParamValue</i></a>) const  <span class="signnote">
            (
            Windows only)
          </span></code></p>
</div>
<div data-if="com" style="display:none;"></div>
<div data-if="dotnet" style="display:none;">
<p>
<code>static void <a href="HOperatorSet.html">HOperatorSet</a>.<b>CreateShapeModel3d</b>(<a href="HTuple.html">HTuple</a> <a href="#ObjectModel3D"><i>objectModel3D</i></a>, <a href="HTuple.html">HTuple</a> <a href="#CamParam"><i>camParam</i></a>, <a href="HTuple.html">HTuple</a> <a href="#RefRotX"><i>refRotX</i></a>, <a href="HTuple.html">HTuple</a> <a href="#RefRotY"><i>refRotY</i></a>, <a href="HTuple.html">HTuple</a> <a href="#RefRotZ"><i>refRotZ</i></a>, <a href="HTuple.html">HTuple</a> <a href="#OrderOfRotation"><i>orderOfRotation</i></a>, <a href="HTuple.html">HTuple</a> <a href="#LongitudeMin"><i>longitudeMin</i></a>, <a href="HTuple.html">HTuple</a> <a href="#LongitudeMax"><i>longitudeMax</i></a>, <a href="HTuple.html">HTuple</a> <a href="#LatitudeMin"><i>latitudeMin</i></a>, <a href="HTuple.html">HTuple</a> <a href="#LatitudeMax"><i>latitudeMax</i></a>, <a href="HTuple.html">HTuple</a> <a href="#CamRollMin"><i>camRollMin</i></a>, <a href="HTuple.html">HTuple</a> <a href="#CamRollMax"><i>camRollMax</i></a>, <a href="HTuple.html">HTuple</a> <a href="#DistMin"><i>distMin</i></a>, <a href="HTuple.html">HTuple</a> <a href="#DistMax"><i>distMax</i></a>, <a href="HTuple.html">HTuple</a> <a href="#MinContrast"><i>minContrast</i></a>, <a href="HTuple.html">HTuple</a> <a href="#GenParamName"><i>genParamName</i></a>, <a href="HTuple.html">HTuple</a> <a href="#GenParamValue"><i>genParamValue</i></a>, out <a href="HTuple.html">HTuple</a> <a href="#ShapeModel3DID"><i>shapeModel3DID</i></a>)</code></p>
<p>
<code>public <a href="HShapeModel3D.html">HShapeModel3D</a>(<a href="HObjectModel3D.html">HObjectModel3D</a> <a href="#ObjectModel3D"><i>objectModel3D</i></a>, <a href="HCamPar.html">HCamPar</a> <a href="#CamParam"><i>camParam</i></a>, double <a href="#RefRotX"><i>refRotX</i></a>, double <a href="#RefRotY"><i>refRotY</i></a>, double <a href="#RefRotZ"><i>refRotZ</i></a>, string <a href="#OrderOfRotation"><i>orderOfRotation</i></a>, double <a href="#LongitudeMin"><i>longitudeMin</i></a>, double <a href="#LongitudeMax"><i>longitudeMax</i></a>, double <a href="#LatitudeMin"><i>latitudeMin</i></a>, double <a href="#LatitudeMax"><i>latitudeMax</i></a>, double <a href="#CamRollMin"><i>camRollMin</i></a>, double <a href="#CamRollMax"><i>camRollMax</i></a>, double <a href="#DistMin"><i>distMin</i></a>, double <a href="#DistMax"><i>distMax</i></a>, int <a href="#MinContrast"><i>minContrast</i></a>, <a href="HTuple.html">HTuple</a> <a href="#GenParamName"><i>genParamName</i></a>, <a href="HTuple.html">HTuple</a> <a href="#GenParamValue"><i>genParamValue</i></a>)</code></p>
<p>
<code>public <a href="HShapeModel3D.html">HShapeModel3D</a>(<a href="HObjectModel3D.html">HObjectModel3D</a> <a href="#ObjectModel3D"><i>objectModel3D</i></a>, <a href="HCamPar.html">HCamPar</a> <a href="#CamParam"><i>camParam</i></a>, double <a href="#RefRotX"><i>refRotX</i></a>, double <a href="#RefRotY"><i>refRotY</i></a>, double <a href="#RefRotZ"><i>refRotZ</i></a>, string <a href="#OrderOfRotation"><i>orderOfRotation</i></a>, double <a href="#LongitudeMin"><i>longitudeMin</i></a>, double <a href="#LongitudeMax"><i>longitudeMax</i></a>, double <a href="#LatitudeMin"><i>latitudeMin</i></a>, double <a href="#LatitudeMax"><i>latitudeMax</i></a>, double <a href="#CamRollMin"><i>camRollMin</i></a>, double <a href="#CamRollMax"><i>camRollMax</i></a>, double <a href="#DistMin"><i>distMin</i></a>, double <a href="#DistMax"><i>distMax</i></a>, int <a href="#MinContrast"><i>minContrast</i></a>, string <a href="#GenParamName"><i>genParamName</i></a>, int <a href="#GenParamValue"><i>genParamValue</i></a>)</code></p>
<p>
<code>void <a href="HShapeModel3D.html">HShapeModel3D</a>.<b>CreateShapeModel3d</b>(<a href="HObjectModel3D.html">HObjectModel3D</a> <a href="#ObjectModel3D"><i>objectModel3D</i></a>, <a href="HCamPar.html">HCamPar</a> <a href="#CamParam"><i>camParam</i></a>, double <a href="#RefRotX"><i>refRotX</i></a>, double <a href="#RefRotY"><i>refRotY</i></a>, double <a href="#RefRotZ"><i>refRotZ</i></a>, string <a href="#OrderOfRotation"><i>orderOfRotation</i></a>, double <a href="#LongitudeMin"><i>longitudeMin</i></a>, double <a href="#LongitudeMax"><i>longitudeMax</i></a>, double <a href="#LatitudeMin"><i>latitudeMin</i></a>, double <a href="#LatitudeMax"><i>latitudeMax</i></a>, double <a href="#CamRollMin"><i>camRollMin</i></a>, double <a href="#CamRollMax"><i>camRollMax</i></a>, double <a href="#DistMin"><i>distMin</i></a>, double <a href="#DistMax"><i>distMax</i></a>, int <a href="#MinContrast"><i>minContrast</i></a>, <a href="HTuple.html">HTuple</a> <a href="#GenParamName"><i>genParamName</i></a>, <a href="HTuple.html">HTuple</a> <a href="#GenParamValue"><i>genParamValue</i></a>)</code></p>
<p>
<code>void <a href="HShapeModel3D.html">HShapeModel3D</a>.<b>CreateShapeModel3d</b>(<a href="HObjectModel3D.html">HObjectModel3D</a> <a href="#ObjectModel3D"><i>objectModel3D</i></a>, <a href="HCamPar.html">HCamPar</a> <a href="#CamParam"><i>camParam</i></a>, double <a href="#RefRotX"><i>refRotX</i></a>, double <a href="#RefRotY"><i>refRotY</i></a>, double <a href="#RefRotZ"><i>refRotZ</i></a>, string <a href="#OrderOfRotation"><i>orderOfRotation</i></a>, double <a href="#LongitudeMin"><i>longitudeMin</i></a>, double <a href="#LongitudeMax"><i>longitudeMax</i></a>, double <a href="#LatitudeMin"><i>latitudeMin</i></a>, double <a href="#LatitudeMax"><i>latitudeMax</i></a>, double <a href="#CamRollMin"><i>camRollMin</i></a>, double <a href="#CamRollMax"><i>camRollMax</i></a>, double <a href="#DistMin"><i>distMin</i></a>, double <a href="#DistMax"><i>distMax</i></a>, int <a href="#MinContrast"><i>minContrast</i></a>, string <a href="#GenParamName"><i>genParamName</i></a>, int <a href="#GenParamValue"><i>genParamValue</i></a>)</code></p>
<p>
<code><a href="HShapeModel3D.html">HShapeModel3D</a> <a href="HCamPar.html">HCamPar</a>.<b>CreateShapeModel3d</b>(<a href="HObjectModel3D.html">HObjectModel3D</a> <a href="#ObjectModel3D"><i>objectModel3D</i></a>, double <a href="#RefRotX"><i>refRotX</i></a>, double <a href="#RefRotY"><i>refRotY</i></a>, double <a href="#RefRotZ"><i>refRotZ</i></a>, string <a href="#OrderOfRotation"><i>orderOfRotation</i></a>, double <a href="#LongitudeMin"><i>longitudeMin</i></a>, double <a href="#LongitudeMax"><i>longitudeMax</i></a>, double <a href="#LatitudeMin"><i>latitudeMin</i></a>, double <a href="#LatitudeMax"><i>latitudeMax</i></a>, double <a href="#CamRollMin"><i>camRollMin</i></a>, double <a href="#CamRollMax"><i>camRollMax</i></a>, double <a href="#DistMin"><i>distMin</i></a>, double <a href="#DistMax"><i>distMax</i></a>, int <a href="#MinContrast"><i>minContrast</i></a>, <a href="HTuple.html">HTuple</a> <a href="#GenParamName"><i>genParamName</i></a>, <a href="HTuple.html">HTuple</a> <a href="#GenParamValue"><i>genParamValue</i></a>)</code></p>
<p>
<code><a href="HShapeModel3D.html">HShapeModel3D</a> <a href="HCamPar.html">HCamPar</a>.<b>CreateShapeModel3d</b>(<a href="HObjectModel3D.html">HObjectModel3D</a> <a href="#ObjectModel3D"><i>objectModel3D</i></a>, double <a href="#RefRotX"><i>refRotX</i></a>, double <a href="#RefRotY"><i>refRotY</i></a>, double <a href="#RefRotZ"><i>refRotZ</i></a>, string <a href="#OrderOfRotation"><i>orderOfRotation</i></a>, double <a href="#LongitudeMin"><i>longitudeMin</i></a>, double <a href="#LongitudeMax"><i>longitudeMax</i></a>, double <a href="#LatitudeMin"><i>latitudeMin</i></a>, double <a href="#LatitudeMax"><i>latitudeMax</i></a>, double <a href="#CamRollMin"><i>camRollMin</i></a>, double <a href="#CamRollMax"><i>camRollMax</i></a>, double <a href="#DistMin"><i>distMin</i></a>, double <a href="#DistMax"><i>distMax</i></a>, int <a href="#MinContrast"><i>minContrast</i></a>, string <a href="#GenParamName"><i>genParamName</i></a>, int <a href="#GenParamValue"><i>genParamValue</i></a>)</code></p>
</div>
<div data-if="python" style="display:none;">
<p>
<code>def <b>create_shape_model_3d</b>(<a href="#ObjectModel3D"><i>object_model_3d</i></a>: HHandle, <a href="#CamParam"><i>cam_param</i></a>: Sequence[Union[int, float, str]], <a href="#RefRotX"><i>ref_rot_x</i></a>: float, <a href="#RefRotY"><i>ref_rot_y</i></a>: float, <a href="#RefRotZ"><i>ref_rot_z</i></a>: float, <a href="#OrderOfRotation"><i>order_of_rotation</i></a>: str, <a href="#LongitudeMin"><i>longitude_min</i></a>: float, <a href="#LongitudeMax"><i>longitude_max</i></a>: float, <a href="#LatitudeMin"><i>latitude_min</i></a>: float, <a href="#LatitudeMax"><i>latitude_max</i></a>: float, <a href="#CamRollMin"><i>cam_roll_min</i></a>: float, <a href="#CamRollMax"><i>cam_roll_max</i></a>: float, <a href="#DistMin"><i>dist_min</i></a>: float, <a href="#DistMax"><i>dist_max</i></a>: float, <a href="#MinContrast"><i>min_contrast</i></a>: int, <a href="#GenParamName"><i>gen_param_name</i></a>: MaybeSequence[str], <a href="#GenParamValue"><i>gen_param_value</i></a>: MaybeSequence[Union[int, float, str]]) -&gt; HHandle</code></p>
</div>
<h2 id="sec_description">描述</h2>
<p>该算子 <code><span data-if="hdevelop" style="display:inline">create_shape_model_3d</span><span data-if="c" style="display:none">create_shape_model_3d</span><span data-if="cpp" style="display:none">CreateShapeModel3d</span><span data-if="com" style="display:none">CreateShapeModel3d</span><span data-if="dotnet" style="display:none">CreateShapeModel3d</span><span data-if="python" style="display:none">create_shape_model_3d</span></code> prepares a 3D object
model, which is passed in <a href="#ObjectModel3D"><i><code><span data-if="hdevelop" style="display:inline">ObjectModel3D</span><span data-if="c" style="display:none">ObjectModel3D</span><span data-if="cpp" style="display:none">ObjectModel3D</span><span data-if="com" style="display:none">ObjectModel3D</span><span data-if="dotnet" style="display:none">objectModel3D</span><span data-if="python" style="display:none">object_model_3d</span></code></i></a>, as a 3D shape
model used for matching.  The 3D object model must previously been
read from a file by using <a href="read_object_model_3d.html"><code><span data-if="hdevelop" style="display:inline">read_object_model_3d</span><span data-if="c" style="display:none">read_object_model_3d</span><span data-if="cpp" style="display:none">ReadObjectModel3d</span><span data-if="com" style="display:none">ReadObjectModel3d</span><span data-if="dotnet" style="display:none">ReadObjectModel3d</span><span data-if="python" style="display:none">read_object_model_3d</span></code></a>.
</p>
<p>The 3D shape model is generated by computing different views of the
3D object model within a user-specified pose range. The views are
automatically generated by placing virtual cameras around the 3D
object model and projecting the 3D object model into the image plane
of each virtual camera position. For each such obtained view a 2D
shape representation is computed. Thus, for the generation of the 3D shape
model, no images of the object are used but only the 3D object model,
which is passed in <a href="#ObjectModel3D"><i><code><span data-if="hdevelop" style="display:inline">ObjectModel3D</span><span data-if="c" style="display:none">ObjectModel3D</span><span data-if="cpp" style="display:none">ObjectModel3D</span><span data-if="com" style="display:none">ObjectModel3D</span><span data-if="dotnet" style="display:none">objectModel3D</span><span data-if="python" style="display:none">object_model_3d</span></code></i></a>. The shape representations
of all views are stored in the 3D shape model, which is returned in
<a href="#ShapeModel3DID"><i><code><span data-if="hdevelop" style="display:inline">ShapeModel3DID</span><span data-if="c" style="display:none">ShapeModel3DID</span><span data-if="cpp" style="display:none">ShapeModel3DID</span><span data-if="com" style="display:none">ShapeModel3DID</span><span data-if="dotnet" style="display:none">shapeModel3DID</span><span data-if="python" style="display:none">shape_model_3did</span></code></i></a>. During the matching process with
<a href="find_shape_model_3d.html"><code><span data-if="hdevelop" style="display:inline">find_shape_model_3d</span><span data-if="c" style="display:none">find_shape_model_3d</span><span data-if="cpp" style="display:none">FindShapeModel3d</span><span data-if="com" style="display:none">FindShapeModel3d</span><span data-if="dotnet" style="display:none">FindShapeModel3d</span><span data-if="python" style="display:none">find_shape_model_3d</span></code></a>, the shape representations are used to
find out the best-matching view, from which the pose is subsequently
refined and returned.
</p>
<p>In order to create the model views correctly, the camera parameters
of the camera that will be used for the matching must be passed in
<a href="#CamParam"><i><code><span data-if="hdevelop" style="display:inline">CamParam</span><span data-if="c" style="display:none">CamParam</span><span data-if="cpp" style="display:none">CamParam</span><span data-if="com" style="display:none">CamParam</span><span data-if="dotnet" style="display:none">camParam</span><span data-if="python" style="display:none">cam_param</span></code></i></a>. The camera parameters are necessary, for example,
to determine the scale of the projections by using the actual focal
length of the camera. Furthermore, they are used to treat radial
distortions of the lens correctly.  Consequently, it is essential
to calibrate the camera by using <a href="calibrate_cameras.html"><code><span data-if="hdevelop" style="display:inline">calibrate_cameras</span><span data-if="c" style="display:none">calibrate_cameras</span><span data-if="cpp" style="display:none">CalibrateCameras</span><span data-if="com" style="display:none">CalibrateCameras</span><span data-if="dotnet" style="display:none">CalibrateCameras</span><span data-if="python" style="display:none">calibrate_cameras</span></code></a> before
creating the 3D shape model.  On the one hand, this is necessary to
obtain accurate poses from <a href="find_shape_model_3d.html"><code><span data-if="hdevelop" style="display:inline">find_shape_model_3d</span><span data-if="c" style="display:none">find_shape_model_3d</span><span data-if="cpp" style="display:none">FindShapeModel3d</span><span data-if="com" style="display:none">FindShapeModel3d</span><span data-if="dotnet" style="display:none">FindShapeModel3d</span><span data-if="python" style="display:none">find_shape_model_3d</span></code></a>. On the other
hand, this makes the 3D 匹配 applicable even when using lenses
with significant radial distortions.
</p>
<p>The pose range within which the model views are generated can be
specified by the parameters <a href="#RefRotX"><i><code><span data-if="hdevelop" style="display:inline">RefRotX</span><span data-if="c" style="display:none">RefRotX</span><span data-if="cpp" style="display:none">RefRotX</span><span data-if="com" style="display:none">RefRotX</span><span data-if="dotnet" style="display:none">refRotX</span><span data-if="python" style="display:none">ref_rot_x</span></code></i></a>, <a href="#RefRotY"><i><code><span data-if="hdevelop" style="display:inline">RefRotY</span><span data-if="c" style="display:none">RefRotY</span><span data-if="cpp" style="display:none">RefRotY</span><span data-if="com" style="display:none">RefRotY</span><span data-if="dotnet" style="display:none">refRotY</span><span data-if="python" style="display:none">ref_rot_y</span></code></i></a>,
<a href="#RefRotZ"><i><code><span data-if="hdevelop" style="display:inline">RefRotZ</span><span data-if="c" style="display:none">RefRotZ</span><span data-if="cpp" style="display:none">RefRotZ</span><span data-if="com" style="display:none">RefRotZ</span><span data-if="dotnet" style="display:none">refRotZ</span><span data-if="python" style="display:none">ref_rot_z</span></code></i></a>, <a href="#OrderOfRotation"><i><code><span data-if="hdevelop" style="display:inline">OrderOfRotation</span><span data-if="c" style="display:none">OrderOfRotation</span><span data-if="cpp" style="display:none">OrderOfRotation</span><span data-if="com" style="display:none">OrderOfRotation</span><span data-if="dotnet" style="display:none">orderOfRotation</span><span data-if="python" style="display:none">order_of_rotation</span></code></i></a>, <a href="#LongitudeMin"><i><code><span data-if="hdevelop" style="display:inline">LongitudeMin</span><span data-if="c" style="display:none">LongitudeMin</span><span data-if="cpp" style="display:none">LongitudeMin</span><span data-if="com" style="display:none">LongitudeMin</span><span data-if="dotnet" style="display:none">longitudeMin</span><span data-if="python" style="display:none">longitude_min</span></code></i></a>,
<a href="#LongitudeMax"><i><code><span data-if="hdevelop" style="display:inline">LongitudeMax</span><span data-if="c" style="display:none">LongitudeMax</span><span data-if="cpp" style="display:none">LongitudeMax</span><span data-if="com" style="display:none">LongitudeMax</span><span data-if="dotnet" style="display:none">longitudeMax</span><span data-if="python" style="display:none">longitude_max</span></code></i></a>, <a href="#LatitudeMin"><i><code><span data-if="hdevelop" style="display:inline">LatitudeMin</span><span data-if="c" style="display:none">LatitudeMin</span><span data-if="cpp" style="display:none">LatitudeMin</span><span data-if="com" style="display:none">LatitudeMin</span><span data-if="dotnet" style="display:none">latitudeMin</span><span data-if="python" style="display:none">latitude_min</span></code></i></a>, <a href="#LatitudeMax"><i><code><span data-if="hdevelop" style="display:inline">LatitudeMax</span><span data-if="c" style="display:none">LatitudeMax</span><span data-if="cpp" style="display:none">LatitudeMax</span><span data-if="com" style="display:none">LatitudeMax</span><span data-if="dotnet" style="display:none">latitudeMax</span><span data-if="python" style="display:none">latitude_max</span></code></i></a>,
<a href="#CamRollMin"><i><code><span data-if="hdevelop" style="display:inline">CamRollMin</span><span data-if="c" style="display:none">CamRollMin</span><span data-if="cpp" style="display:none">CamRollMin</span><span data-if="com" style="display:none">CamRollMin</span><span data-if="dotnet" style="display:none">camRollMin</span><span data-if="python" style="display:none">cam_roll_min</span></code></i></a>, <a href="#CamRollMax"><i><code><span data-if="hdevelop" style="display:inline">CamRollMax</span><span data-if="c" style="display:none">CamRollMax</span><span data-if="cpp" style="display:none">CamRollMax</span><span data-if="com" style="display:none">CamRollMax</span><span data-if="dotnet" style="display:none">camRollMax</span><span data-if="python" style="display:none">cam_roll_max</span></code></i></a>, <a href="#DistMin"><i><code><span data-if="hdevelop" style="display:inline">DistMin</span><span data-if="c" style="display:none">DistMin</span><span data-if="cpp" style="display:none">DistMin</span><span data-if="com" style="display:none">DistMin</span><span data-if="dotnet" style="display:none">distMin</span><span data-if="python" style="display:none">dist_min</span></code></i></a>, and
<a href="#DistMax"><i><code><span data-if="hdevelop" style="display:inline">DistMax</span><span data-if="c" style="display:none">DistMax</span><span data-if="cpp" style="display:none">DistMax</span><span data-if="com" style="display:none">DistMax</span><span data-if="dotnet" style="display:none">distMax</span><span data-if="python" style="display:none">dist_max</span></code></i></a>.
Note that the model will only be recognized during
the matching if it appears within the specified pose range.
The parameters are described in the following:
</p>
<p>Before computing the views, the origin of the coordinate system of
the 3D object model is moved to the reference point of the 3D object
model, which is the center of the smallest enclosing axis-parallel
cuboid and can be queried by using
<a href="get_object_model_3d_params.html"><code><span data-if="hdevelop" style="display:inline">get_object_model_3d_params</span><span data-if="c" style="display:none">get_object_model_3d_params</span><span data-if="cpp" style="display:none">GetObjectModel3dParams</span><span data-if="com" style="display:none">GetObjectModel3dParams</span><span data-if="dotnet" style="display:none">GetObjectModel3dParams</span><span data-if="python" style="display:none">get_object_model_3d_params</span></code></a>. The virtual cameras, which are
used to create the views, are arranged around the 3D object model in
such a way that they all look at the origin of the coordinate
system, i.e., the z axes of the cameras pass through the origin. The
pose range can then be specified by restricting the views to a
certain quadrilateral on the sphere around the origin. This
naturally leads to the use of the spherical coordinates longitude,
latitude, and radius. The definition of the spherical coordinate
system is chosen such that the equatorial plane corresponds to the
xz plane of the Cartesian coordinate system with the y axis pointing
to the south pole (negative latitude) and the negative z axis
pointing in the direction of the zero meridian (see
<a href="convert_point_3d_spher_to_cart.html"><code><span data-if="hdevelop" style="display:inline">convert_point_3d_spher_to_cart</span><span data-if="c" style="display:none">convert_point_3d_spher_to_cart</span><span data-if="cpp" style="display:none">ConvertPoint3dSpherToCart</span><span data-if="com" style="display:none">ConvertPoint3dSpherToCart</span><span data-if="dotnet" style="display:none">ConvertPoint3dSpherToCart</span><span data-if="python" style="display:none">convert_point_3d_spher_to_cart</span></code></a> or
<a href="convert_point_3d_cart_to_spher.html"><code><span data-if="hdevelop" style="display:inline">convert_point_3d_cart_to_spher</span><span data-if="c" style="display:none">convert_point_3d_cart_to_spher</span><span data-if="cpp" style="display:none">ConvertPoint3dCartToSpher</span><span data-if="com" style="display:none">ConvertPoint3dCartToSpher</span><span data-if="dotnet" style="display:none">ConvertPoint3dCartToSpher</span><span data-if="python" style="display:none">convert_point_3d_cart_to_spher</span></code></a> for further details about the
conversion between Cartesian and spherical coordinates). The
advantage of this definition is that a camera with the pose
[0,0,z,0,0,0,0] has its optical center at longitude=0, latitude=0,
and radius=z. In this case, the radius represents the distance of
the optical center of the camera to the reference point of the 3D
object model.
</p>
<p>The longitude range, for which views are to be generated, can be
specified by <a href="#LongitudeMin"><i><code><span data-if="hdevelop" style="display:inline">LongitudeMin</span><span data-if="c" style="display:none">LongitudeMin</span><span data-if="cpp" style="display:none">LongitudeMin</span><span data-if="com" style="display:none">LongitudeMin</span><span data-if="dotnet" style="display:none">longitudeMin</span><span data-if="python" style="display:none">longitude_min</span></code></i></a> and <a href="#LongitudeMax"><i><code><span data-if="hdevelop" style="display:inline">LongitudeMax</span><span data-if="c" style="display:none">LongitudeMax</span><span data-if="cpp" style="display:none">LongitudeMax</span><span data-if="com" style="display:none">LongitudeMax</span><span data-if="dotnet" style="display:none">longitudeMax</span><span data-if="python" style="display:none">longitude_max</span></code></i></a>, both
given in radians. Accordingly, the latitude range can be
specified  by <a href="#LatitudeMin"><i><code><span data-if="hdevelop" style="display:inline">LatitudeMin</span><span data-if="c" style="display:none">LatitudeMin</span><span data-if="cpp" style="display:none">LatitudeMin</span><span data-if="com" style="display:none">LatitudeMin</span><span data-if="dotnet" style="display:none">latitudeMin</span><span data-if="python" style="display:none">latitude_min</span></code></i></a> and <a href="#LatitudeMax"><i><code><span data-if="hdevelop" style="display:inline">LatitudeMax</span><span data-if="c" style="display:none">LatitudeMax</span><span data-if="cpp" style="display:none">LatitudeMax</span><span data-if="com" style="display:none">LatitudeMax</span><span data-if="dotnet" style="display:none">latitudeMax</span><span data-if="python" style="display:none">latitude_max</span></code></i></a>, also given
in radians. <a href="#LongitudeMin"><i><code><span data-if="hdevelop" style="display:inline">LongitudeMin</span><span data-if="c" style="display:none">LongitudeMin</span><span data-if="cpp" style="display:none">LongitudeMin</span><span data-if="com" style="display:none">LongitudeMin</span><span data-if="dotnet" style="display:none">longitudeMin</span><span data-if="python" style="display:none">longitude_min</span></code></i></a> and <a href="#LongitudeMax"><i><code><span data-if="hdevelop" style="display:inline">LongitudeMax</span><span data-if="c" style="display:none">LongitudeMax</span><span data-if="cpp" style="display:none">LongitudeMax</span><span data-if="com" style="display:none">LongitudeMax</span><span data-if="dotnet" style="display:none">longitudeMax</span><span data-if="python" style="display:none">longitude_max</span></code></i></a>
are adjusted to maintain a range of 360° <span title="1" style="vertical-align:-0.37221em" class="math"><!-- Created by MetaPost 1.902 on 2023.05.15:2033 --><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="2.00266em" height="1.12127em" viewBox="0 0 32.042526 17.940399">
<!-- Original BoundingBox: -16.021271 -8.970200 16.021255 8.970200 -->
  <defs>
    <g transform="scale(0.009963,0.009963)" id="GLYPHcmr10_40">
      <path style="fill-rule: evenodd;" d="M331.000000 240.000000C331.000000 237.000000,331.000000 235.000000,314.000000 218.000000C189.000000 92.000000,157.000000 -97.000000,157.000000 -250.000000C157.000000 -424.000000,195.000000 -598.000000,318.000000 -723.000000C331.000000 -735.000000,331.000000 -737.000000,331.000000 -740.000000C331.000000 -747.000000,327.000000 -750.000000,321.000000 -750.000000C311.000000 -750.000000,221.000000 -682.000000,162.000000 -555.000000C111.000000 -445.000000,99.000000 -334.000000,99.000000 -250.000000C99.000000 -172.000000,110.000000 -51.000000,165.000000 62.000000C225.000000 185.000000,311.000000 250.000000,321.000000 250.000000C327.000000 250.000000,331.000000 247.000000,331.000000 240.000000"></path>
    </g>
    <g transform="scale(0.009963,0.009963)" id="GLYPHcmr10_41">
      <path style="fill-rule: evenodd;" d="M289.000000 -250.000000C289.000000 -328.000000,278.000000 -449.000000,223.000000 -562.000000C163.000000 -685.000000,77.000000 -750.000000,67.000000 -750.000000C61.000000 -750.000000,57.000000 -746.000000,57.000000 -740.000000C57.000000 -737.000000,57.000000 -735.000000,76.000000 -717.000000C174.000000 -618.000000,231.000000 -459.000000,231.000000 -250.000000C231.000000 -79.000000,194.000000 97.000000,70.000000 223.000000C57.000000 235.000000,57.000000 237.000000,57.000000 240.000000C57.000000 246.000000,61.000000 250.000000,67.000000 250.000000C77.000000 250.000000,167.000000 182.000000,226.000000 55.000000C277.000000 -55.000000,289.000000 -166.000000,289.000000 -250.000000"></path>
    </g>
    <g transform="scale(0.009963,0.009963)" id="GLYPHcmr10_50">
      <path style="fill-rule: evenodd;" d="M127.000000 -77.000000L233.000000 -180.000000C389.000000 -318.000000,449.000000 -372.000000,449.000000 -472.000000C449.000000 -586.000000,359.000000 -666.000000,237.000000 -666.000000C124.000000 -666.000000,50.000000 -574.000000,50.000000 -485.000000C50.000000 -429.000000,100.000000 -429.000000,103.000000 -429.000000C120.000000 -429.000000,155.000000 -441.000000,155.000000 -482.000000C155.000000 -508.000000,137.000000 -534.000000,102.000000 -534.000000C94.000000 -534.000000,92.000000 -534.000000,89.000000 -533.000000C112.000000 -598.000000,166.000000 -635.000000,224.000000 -635.000000C315.000000 -635.000000,358.000000 -554.000000,358.000000 -472.000000C358.000000 -392.000000,308.000000 -313.000000,253.000000 -251.000000L61.000000 -37.000000C50.000000 -26.000000,50.000000 -24.000000,50.000000 -0.000000L421.000000 -0.000000L449.000000 -174.000000L424.000000 -174.000000C419.000000 -144.000000,412.000000 -100.000000,402.000000 -85.000000C395.000000 -77.000000,329.000000 -77.000000,307.000000 -77.000000"></path>
    </g>
    <g transform="scale(0.009963,0.009963)" id="GLYPHcmmi10_25">
      <path style="fill-rule: evenodd;" d="M265.000000 -373.000000L378.000000 -373.000000C345.000000 -225.000000,336.000000 -182.000000,336.000000 -115.000000C336.000000 -100.000000,336.000000 -73.000000,344.000000 -39.000000C354.000000 5.000000,365.000000 11.000000,380.000000 11.000000C400.000000 11.000000,421.000000 -7.000000,421.000000 -27.000000C421.000000 -33.000000,421.000000 -35.000000,415.000000 -49.000000C386.000000 -121.000000,386.000000 -186.000000,386.000000 -214.000000C386.000000 -267.000000,393.000000 -321.000000,404.000000 -373.000000L518.000000 -373.000000C531.000000 -373.000000,567.000000 -373.000000,567.000000 -407.000000C567.000000 -431.000000,546.000000 -431.000000,527.000000 -431.000000L192.000000 -431.000000C170.000000 -431.000000,132.000000 -431.000000,88.000000 -384.000000C53.000000 -345.000000,27.000000 -299.000000,27.000000 -294.000000C27.000000 -293.000000,27.000000 -284.000000,39.000000 -284.000000C47.000000 -284.000000,49.000000 -288.000000,55.000000 -296.000000C104.000000 -373.000000,162.000000 -373.000000,182.000000 -373.000000L239.000000 -373.000000C207.000000 -252.000000,153.000000 -131.000000,111.000000 -40.000000C103.000000 -25.000000,103.000000 -23.000000,103.000000 -16.000000C103.000000 3.000000,119.000000 11.000000,132.000000 11.000000C162.000000 11.000000,170.000000 -17.000000,182.000000 -54.000000C196.000000 -100.000000,196.000000 -102.000000,209.000000 -152.000000"></path>
    </g>
  </defs>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,0.994720 11.985046)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmr10_40"></use>
    <use xlink:href="#GLYPHcmr10_50" x="3.888963"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,15.163910 11.985046)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi10_25"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,24.822174 11.985046)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmr10_41"></use>
  </g>
</svg></span>.
If an adjustment is possible, <a href="#LongitudeMin"><i><code><span data-if="hdevelop" style="display:inline">LongitudeMin</span><span data-if="c" style="display:none">LongitudeMin</span><span data-if="cpp" style="display:none">LongitudeMin</span><span data-if="com" style="display:none">LongitudeMin</span><span data-if="dotnet" style="display:none">longitudeMin</span><span data-if="python" style="display:none">longitude_min</span></code></i></a> and the range are
preserved. The minimum and maximum distance between the camera center
and the model reference point is specified by <a href="#DistMin"><i><code><span data-if="hdevelop" style="display:inline">DistMin</span><span data-if="c" style="display:none">DistMin</span><span data-if="cpp" style="display:none">DistMin</span><span data-if="com" style="display:none">DistMin</span><span data-if="dotnet" style="display:none">distMin</span><span data-if="python" style="display:none">dist_min</span></code></i></a> and
<a href="#DistMax"><i><code><span data-if="hdevelop" style="display:inline">DistMax</span><span data-if="c" style="display:none">DistMax</span><span data-if="cpp" style="display:none">DistMax</span><span data-if="com" style="display:none">DistMax</span><span data-if="dotnet" style="display:none">distMax</span><span data-if="python" style="display:none">dist_max</span></code></i></a>.
Thereby, the model origin is in the center of the smallest enclosing cuboid
and does not necessarily coincide with the origin of the CAD coordinate
system.
Note that the unit of the distance must be meters
(assuming that the parameter <code><span data-if="hdevelop" style="display:inline">Scale</span><span data-if="c" style="display:none">Scale</span><span data-if="cpp" style="display:none">Scale</span><span data-if="com" style="display:none">Scale</span><span data-if="dotnet" style="display:none">scale</span><span data-if="python" style="display:none">scale</span></code> has been correctly set
when reading the CAD file with <a href="read_object_model_3d.html"><code><span data-if="hdevelop" style="display:inline">read_object_model_3d</span><span data-if="c" style="display:none">read_object_model_3d</span><span data-if="cpp" style="display:none">ReadObjectModel3d</span><span data-if="com" style="display:none">ReadObjectModel3d</span><span data-if="dotnet" style="display:none">ReadObjectModel3d</span><span data-if="python" style="display:none">read_object_model_3d</span></code></a>).
Finally, the minimum and the maximum camera roll angle can be
specified in <a href="#CamRollMin"><i><code><span data-if="hdevelop" style="display:inline">CamRollMin</span><span data-if="c" style="display:none">CamRollMin</span><span data-if="cpp" style="display:none">CamRollMin</span><span data-if="com" style="display:none">CamRollMin</span><span data-if="dotnet" style="display:none">camRollMin</span><span data-if="python" style="display:none">cam_roll_min</span></code></i></a> and <a href="#CamRollMax"><i><code><span data-if="hdevelop" style="display:inline">CamRollMax</span><span data-if="c" style="display:none">CamRollMax</span><span data-if="cpp" style="display:none">CamRollMax</span><span data-if="com" style="display:none">CamRollMax</span><span data-if="dotnet" style="display:none">camRollMax</span><span data-if="python" style="display:none">cam_roll_max</span></code></i></a>. This
interval specifies the allowable camera rotation around its z axis
with respect to the 3D object model.  If the image plane is parallel
to the plane on which the objects reside and if it is known that the
object may rotate in this plane only in a restricted range, then it
is reasonable to specify this range in <a href="#CamRollMin"><i><code><span data-if="hdevelop" style="display:inline">CamRollMin</span><span data-if="c" style="display:none">CamRollMin</span><span data-if="cpp" style="display:none">CamRollMin</span><span data-if="com" style="display:none">CamRollMin</span><span data-if="dotnet" style="display:none">camRollMin</span><span data-if="python" style="display:none">cam_roll_min</span></code></i></a> and
<a href="#CamRollMax"><i><code><span data-if="hdevelop" style="display:inline">CamRollMax</span><span data-if="c" style="display:none">CamRollMax</span><span data-if="cpp" style="display:none">CamRollMax</span><span data-if="com" style="display:none">CamRollMax</span><span data-if="dotnet" style="display:none">camRollMax</span><span data-if="python" style="display:none">cam_roll_max</span></code></i></a>.  In all other cases the interpretation of the
camera roll angle is difficult, and hence, it is recommended to set
this interval to <span title="2" style="vertical-align:-0.37221em" class="math"><!-- Created by MetaPost 1.902 on 2023.05.15:2033 --><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="3.8793em" height="1.12127em" viewBox="0 0 62.068863 17.940399">
<!-- Original BoundingBox: -31.034439 -8.970200 31.034424 8.970200 -->
  <defs>
    <g transform="scale(0.009963,0.009963)" id="GLYPHcmr10_43">
      <path style="fill-rule: evenodd;" d="M409.000000 -230.000000L688.000000 -230.000000C702.000000 -230.000000,721.000000 -230.000000,721.000000 -250.000000C721.000000 -270.000000,702.000000 -270.000000,688.000000 -270.000000L409.000000 -270.000000L409.000000 -550.000000C409.000000 -564.000000,409.000000 -583.000000,389.000000 -583.000000C369.000000 -583.000000,369.000000 -564.000000,369.000000 -550.000000L369.000000 -270.000000L89.000000 -270.000000C75.000000 -270.000000,56.000000 -270.000000,56.000000 -250.000000C56.000000 -230.000000,75.000000 -230.000000,89.000000 -230.000000L369.000000 -230.000000L369.000000 50.000000C369.000000 64.000000,369.000000 83.000000,389.000000 83.000000C409.000000 83.000000,409.000000 64.000000,409.000000 50.000000"></path>
    </g>
    <g transform="scale(0.009963,0.009963)" id="GLYPHcmr10_91">
      <path style="fill-rule: evenodd;" d="M255.000000 250.000000L255.000000 210.000000L158.000000 210.000000L158.000000 -710.000000L255.000000 -710.000000L255.000000 -750.000000L118.000000 -750.000000L118.000000 250.000000"></path>
    </g>
    <g transform="scale(0.009963,0.009963)" id="GLYPHcmr10_93">
      <path style="fill-rule: evenodd;" d="M159.000000 -750.000000L22.000000 -750.000000L22.000000 -710.000000L119.000000 -710.000000L119.000000 210.000000L22.000000 210.000000L22.000000 250.000000L159.000000 250.000000"></path>
    </g>
    <g transform="scale(0.009963,0.009963)" id="GLYPHcmsy10_0">
      <path style="fill-rule: evenodd;" d="M659.000000 -230.000000C676.000000 -230.000000,694.000000 -230.000000,694.000000 -250.000000C694.000000 -270.000000,676.000000 -270.000000,659.000000 -270.000000L118.000000 -270.000000C101.000000 -270.000000,83.000000 -270.000000,83.000000 -250.000000C83.000000 -230.000000,101.000000 -230.000000,118.000000 -230.000000"></path>
    </g>
    <g transform="scale(0.009963,0.009963)" id="GLYPHcmmi10_25">
      <path style="fill-rule: evenodd;" d="M265.000000 -373.000000L378.000000 -373.000000C345.000000 -225.000000,336.000000 -182.000000,336.000000 -115.000000C336.000000 -100.000000,336.000000 -73.000000,344.000000 -39.000000C354.000000 5.000000,365.000000 11.000000,380.000000 11.000000C400.000000 11.000000,421.000000 -7.000000,421.000000 -27.000000C421.000000 -33.000000,421.000000 -35.000000,415.000000 -49.000000C386.000000 -121.000000,386.000000 -186.000000,386.000000 -214.000000C386.000000 -267.000000,393.000000 -321.000000,404.000000 -373.000000L518.000000 -373.000000C531.000000 -373.000000,567.000000 -373.000000,567.000000 -407.000000C567.000000 -431.000000,546.000000 -431.000000,527.000000 -431.000000L192.000000 -431.000000C170.000000 -431.000000,132.000000 -431.000000,88.000000 -384.000000C53.000000 -345.000000,27.000000 -299.000000,27.000000 -294.000000C27.000000 -293.000000,27.000000 -284.000000,39.000000 -284.000000C47.000000 -284.000000,49.000000 -288.000000,55.000000 -296.000000C104.000000 -373.000000,162.000000 -373.000000,182.000000 -373.000000L239.000000 -373.000000C207.000000 -252.000000,153.000000 -131.000000,111.000000 -40.000000C103.000000 -25.000000,103.000000 -23.000000,103.000000 -16.000000C103.000000 3.000000,119.000000 11.000000,132.000000 11.000000C162.000000 11.000000,170.000000 -17.000000,182.000000 -54.000000C196.000000 -100.000000,196.000000 -102.000000,209.000000 -152.000000"></path>
    </g>
    <g transform="scale(0.009963,0.009963)" id="GLYPHcmmi10_59">
      <path style="fill-rule: evenodd;" d="M203.000000 -1.000000C203.000000 -67.000000,178.000000 -106.000000,139.000000 -106.000000C106.000000 -106.000000,86.000000 -81.000000,86.000000 -53.000000C86.000000 -26.000000,106.000000 -0.000000,139.000000 -0.000000C151.000000 -0.000000,164.000000 -4.000000,174.000000 -13.000000C177.000000 -15.000000,178.000000 -16.000000,179.000000 -16.000000C180.000000 -16.000000,181.000000 -15.000000,181.000000 -1.000000C181.000000 73.000000,146.000000 133.000000,113.000000 166.000000C102.000000 177.000000,102.000000 179.000000,102.000000 182.000000C102.000000 189.000000,107.000000 193.000000,112.000000 193.000000C123.000000 193.000000,203.000000 116.000000,203.000000 -1.000000"></path>
    </g>
  </defs>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,0.981552 11.985046)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmr10_91"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,5.409424 11.985046)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmsy10_0"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,17.807373 11.985046)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi10_25"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,27.465668 11.985046)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi10_59"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,34.550156 11.985046)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmr10_43"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,46.948303 11.985046)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi10_25"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,56.606567 11.985046)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmr10_93"></use>
  </g>
</svg></span>.  Note that the larger
the specified pose range is chosen the more memory the model will
consume (except from the range of the camera roll angle) and the
slower the matching will be.
</p>
<p>The orientation of the coordinate system of the 3D object model is
defined by the coordinates within the CAD file that was read by
using <a href="read_object_model_3d.html"><code><span data-if="hdevelop" style="display:inline">read_object_model_3d</span><span data-if="c" style="display:none">read_object_model_3d</span><span data-if="cpp" style="display:none">ReadObjectModel3d</span><span data-if="com" style="display:none">ReadObjectModel3d</span><span data-if="dotnet" style="display:none">ReadObjectModel3d</span><span data-if="python" style="display:none">read_object_model_3d</span></code></a>. Therefore, it is reasonable
to previously rotate the 3D object model into a reference
orientation such that the view that corresponds to longitude=0 and
latitude=0 is approximately at the center of the pose range. This
can be achieved by passing appropriate values for the reference
orientation in <a href="#RefRotX"><i><code><span data-if="hdevelop" style="display:inline">RefRotX</span><span data-if="c" style="display:none">RefRotX</span><span data-if="cpp" style="display:none">RefRotX</span><span data-if="com" style="display:none">RefRotX</span><span data-if="dotnet" style="display:none">refRotX</span><span data-if="python" style="display:none">ref_rot_x</span></code></i></a>, <a href="#RefRotY"><i><code><span data-if="hdevelop" style="display:inline">RefRotY</span><span data-if="c" style="display:none">RefRotY</span><span data-if="cpp" style="display:none">RefRotY</span><span data-if="com" style="display:none">RefRotY</span><span data-if="dotnet" style="display:none">refRotY</span><span data-if="python" style="display:none">ref_rot_y</span></code></i></a>, <a href="#RefRotZ"><i><code><span data-if="hdevelop" style="display:inline">RefRotZ</span><span data-if="c" style="display:none">RefRotZ</span><span data-if="cpp" style="display:none">RefRotZ</span><span data-if="com" style="display:none">RefRotZ</span><span data-if="dotnet" style="display:none">refRotZ</span><span data-if="python" style="display:none">ref_rot_z</span></code></i></a>,
and <a href="#OrderOfRotation"><i><code><span data-if="hdevelop" style="display:inline">OrderOfRotation</span><span data-if="c" style="display:none">OrderOfRotation</span><span data-if="cpp" style="display:none">OrderOfRotation</span><span data-if="com" style="display:none">OrderOfRotation</span><span data-if="dotnet" style="display:none">orderOfRotation</span><span data-if="python" style="display:none">order_of_rotation</span></code></i></a>. The rotation is performed around the
axes of the 3D object model, which origin was set to the reference
point. The longitude and latitude range can then be interpreted as a
variation of the 3D object model pose around the reference
orientation.  There are two possible ways to specify the reference
orientation. The first possibility is to specify three rotation
angles in <a href="#RefRotX"><i><code><span data-if="hdevelop" style="display:inline">RefRotX</span><span data-if="c" style="display:none">RefRotX</span><span data-if="cpp" style="display:none">RefRotX</span><span data-if="com" style="display:none">RefRotX</span><span data-if="dotnet" style="display:none">refRotX</span><span data-if="python" style="display:none">ref_rot_x</span></code></i></a>, <a href="#RefRotY"><i><code><span data-if="hdevelop" style="display:inline">RefRotY</span><span data-if="c" style="display:none">RefRotY</span><span data-if="cpp" style="display:none">RefRotY</span><span data-if="com" style="display:none">RefRotY</span><span data-if="dotnet" style="display:none">refRotY</span><span data-if="python" style="display:none">ref_rot_y</span></code></i></a>, and <a href="#RefRotZ"><i><code><span data-if="hdevelop" style="display:inline">RefRotZ</span><span data-if="c" style="display:none">RefRotZ</span><span data-if="cpp" style="display:none">RefRotZ</span><span data-if="com" style="display:none">RefRotZ</span><span data-if="dotnet" style="display:none">refRotZ</span><span data-if="python" style="display:none">ref_rot_z</span></code></i></a>
and the order in which the three rotations are to be applied in
<a href="#OrderOfRotation"><i><code><span data-if="hdevelop" style="display:inline">OrderOfRotation</span><span data-if="c" style="display:none">OrderOfRotation</span><span data-if="cpp" style="display:none">OrderOfRotation</span><span data-if="com" style="display:none">OrderOfRotation</span><span data-if="dotnet" style="display:none">orderOfRotation</span><span data-if="python" style="display:none">order_of_rotation</span></code></i></a>, which can either be <i><span data-if="hdevelop" style="display:inline">'gba'</span><span data-if="c" style="display:none">"gba"</span><span data-if="cpp" style="display:none">"gba"</span><span data-if="com" style="display:none">"gba"</span><span data-if="dotnet" style="display:none">"gba"</span><span data-if="python" style="display:none">"gba"</span></i> or
<i><span data-if="hdevelop" style="display:inline">'abg'</span><span data-if="c" style="display:none">"abg"</span><span data-if="cpp" style="display:none">"abg"</span><span data-if="com" style="display:none">"abg"</span><span data-if="dotnet" style="display:none">"abg"</span><span data-if="python" style="display:none">"abg"</span></i>. The second possibility is to specify the three
components of the Rodriguez rotation vector in <a href="#RefRotX"><i><code><span data-if="hdevelop" style="display:inline">RefRotX</span><span data-if="c" style="display:none">RefRotX</span><span data-if="cpp" style="display:none">RefRotX</span><span data-if="com" style="display:none">RefRotX</span><span data-if="dotnet" style="display:none">refRotX</span><span data-if="python" style="display:none">ref_rot_x</span></code></i></a>,
<a href="#RefRotY"><i><code><span data-if="hdevelop" style="display:inline">RefRotY</span><span data-if="c" style="display:none">RefRotY</span><span data-if="cpp" style="display:none">RefRotY</span><span data-if="com" style="display:none">RefRotY</span><span data-if="dotnet" style="display:none">refRotY</span><span data-if="python" style="display:none">ref_rot_y</span></code></i></a>, and <a href="#RefRotZ"><i><code><span data-if="hdevelop" style="display:inline">RefRotZ</span><span data-if="c" style="display:none">RefRotZ</span><span data-if="cpp" style="display:none">RefRotZ</span><span data-if="com" style="display:none">RefRotZ</span><span data-if="dotnet" style="display:none">refRotZ</span><span data-if="python" style="display:none">ref_rot_z</span></code></i></a>.  In this case,
<a href="#OrderOfRotation"><i><code><span data-if="hdevelop" style="display:inline">OrderOfRotation</span><span data-if="c" style="display:none">OrderOfRotation</span><span data-if="cpp" style="display:none">OrderOfRotation</span><span data-if="com" style="display:none">OrderOfRotation</span><span data-if="dotnet" style="display:none">orderOfRotation</span><span data-if="python" style="display:none">order_of_rotation</span></code></i></a> must be set to <i><span data-if="hdevelop" style="display:inline">'rodriguez'</span><span data-if="c" style="display:none">"rodriguez"</span><span data-if="cpp" style="display:none">"rodriguez"</span><span data-if="com" style="display:none">"rodriguez"</span><span data-if="dotnet" style="display:none">"rodriguez"</span><span data-if="python" style="display:none">"rodriguez"</span></i> (see
<a href="create_pose.html"><code><span data-if="hdevelop" style="display:inline">create_pose</span><span data-if="c" style="display:none">create_pose</span><span data-if="cpp" style="display:none">CreatePose</span><span data-if="com" style="display:none">CreatePose</span><span data-if="dotnet" style="display:none">CreatePose</span><span data-if="python" style="display:none">create_pose</span></code></a> for detailed information about the order of the
rotations and the definition of the Rodriguez vector).
</p>
<p>Thus, two transformations are applied to the 3D object model before
computing the model views within the pose range. The first
transformation is the translation of the origin of the coordinate
systems to the reference point. The second transformation is the
rotation of the 3D object model to the desired reference orientation
around the axes of the reference coordinate system.  By combining
both transformations one obtains the reference pose of the 3D shape
model. The reference pose of the 3D shape model thus describes the
pose of the reference coordinate system with respect to the
coordinate system of the 3D object model defined by the CAD
file. Let t = (x,y,z)' be the coordinates of the
reference point of the 3D object model and R be the
rotation matrix containing the reference orientation. Then, a point
<span title="3" style="vertical-align:-0.26474em" class="math"><!-- Created by MetaPost 1.902 on 2023.05.15:2033 --><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="1.38402em" height="0.767041em" viewBox="0 0 22.144241 12.272659">
<!-- Original BoundingBox: -11.072128 -6.136337 11.072113 6.136322 -->
  <defs>
    <g transform="scale(0.006974,0.006974)" id="GLYPHcmmi7_109">
      <path style="fill-rule: evenodd;" d="M434.000000 -81.000000C429.000000 -61.000000,420.000000 -27.000000,420.000000 -22.000000C420.000000 -0.000000,438.000000 10.000000,454.000000 10.000000C472.000000 10.000000,488.000000 -3.000000,493.000000 -12.000000C498.000000 -21.000000,506.000000 -53.000000,511.000000 -74.000000C516.000000 -93.000000,527.000000 -139.000000,533.000000 -164.000000C539.000000 -186.000000,545.000000 -208.000000,550.000000 -231.000000C561.000000 -274.000000,561.000000 -276.000000,581.000000 -307.000000C613.000000 -356.000000,663.000000 -413.000000,741.000000 -413.000000C797.000000 -413.000000,800.000000 -367.000000,800.000000 -343.000000C800.000000 -283.000000,757.000000 -172.000000,741.000000 -130.000000C730.000000 -102.000000,726.000000 -93.000000,726.000000 -76.000000C726.000000 -23.000000,770.000000 10.000000,821.000000 10.000000C921.000000 10.000000,965.000000 -128.000000,965.000000 -143.000000C965.000000 -156.000000,952.000000 -156.000000,949.000000 -156.000000C935.000000 -156.000000,934.000000 -150.000000,930.000000 -139.000000C907.000000 -59.000000,864.000000 -18.000000,824.000000 -18.000000C803.000000 -18.000000,799.000000 -32.000000,799.000000 -53.000000C799.000000 -76.000000,804.000000 -89.000000,822.000000 -134.000000C834.000000 -165.000000,875.000000 -271.000000,875.000000 -327.000000C875.000000 -343.000000,875.000000 -385.000000,838.000000 -414.000000C821.000000 -427.000000,792.000000 -441.000000,745.000000 -441.000000C655.000000 -441.000000,600.000000 -382.000000,568.000000 -340.000000C560.000000 -425.000000,489.000000 -441.000000,438.000000 -441.000000C355.000000 -441.000000,299.000000 -390.000000,269.000000 -350.000000C262.000000 -419.000000,203.000000 -441.000000,162.000000 -441.000000C119.000000 -441.000000,96.000000 -410.000000,83.000000 -387.000000C61.000000 -350.000000,47.000000 -293.000000,47.000000 -288.000000C47.000000 -275.000000,61.000000 -275.000000,64.000000 -275.000000C78.000000 -275.000000,79.000000 -278.000000,86.000000 -305.000000C101.000000 -364.000000,120.000000 -413.000000,159.000000 -413.000000C185.000000 -413.000000,192.000000 -391.000000,192.000000 -364.000000C192.000000 -345.000000,183.000000 -308.000000,176.000000 -281.000000C169.000000 -254.000000,159.000000 -213.000000,154.000000 -191.000000L122.000000 -63.000000C118.000000 -50.000000,112.000000 -25.000000,112.000000 -22.000000C112.000000 -0.000000,130.000000 10.000000,146.000000 10.000000C164.000000 10.000000,180.000000 -3.000000,185.000000 -12.000000C190.000000 -21.000000,198.000000 -53.000000,203.000000 -74.000000C208.000000 -93.000000,219.000000 -139.000000,225.000000 -164.000000C231.000000 -186.000000,237.000000 -208.000000,242.000000 -231.000000C253.000000 -272.000000,255.000000 -280.000000,284.000000 -321.000000C312.000000 -361.000000,359.000000 -413.000000,434.000000 -413.000000C492.000000 -413.000000,493.000000 -362.000000,493.000000 -343.000000C493.000000 -318.000000,490.000000 -305.000000,476.000000 -249.000000"></path>
    </g>
    <g transform="scale(0.009963,0.009963)" id="GLYPHcmmi10_112">
      <path style="fill-rule: evenodd;" d="M45.000000 122.000000C37.000000 156.000000,35.000000 163.000000,-9.000000 163.000000C-21.000000 163.000000,-32.000000 163.000000,-32.000000 182.000000C-32.000000 190.000000,-27.000000 194.000000,-19.000000 194.000000L65.000000 194.000000L8.000000 194.000000L37.000000 191.000000L65.000000 191.000000L98.000000 191.000000L132.000000 194.000000L164.000000 194.000000C169.000000 194.000000,182.000000 194.000000,182.000000 174.000000C182.000000 163.000000,172.000000 163.000000,158.000000 163.000000C108.000000 163.000000,108.000000 156.000000,108.000000 147.000000C108.000000 135.000000,150.000000 -28.000000,157.000000 -53.000000C170.000000 -24.000000,198.000000 11.000000,249.000000 11.000000C365.000000 11.000000,490.000000 -135.000000,490.000000 -282.000000C490.000000 -376.000000,433.000000 -442.000000,357.000000 -442.000000C307.000000 -442.000000,259.000000 -406.000000,226.000000 -367.000000C216.000000 -421.000000,173.000000 -442.000000,136.000000 -442.000000C90.000000 -442.000000,71.000000 -403.000000,62.000000 -385.000000C44.000000 -351.000000,31.000000 -291.000000,31.000000 -288.000000C31.000000 -278.000000,41.000000 -278.000000,43.000000 -278.000000C53.000000 -278.000000,54.000000 -279.000000,60.000000 -301.000000C77.000000 -372.000000,97.000000 -420.000000,133.000000 -420.000000C150.000000 -420.000000,164.000000 -412.000000,164.000000 -374.000000C164.000000 -351.000000,161.000000 -340.000000,157.000000 -323.000000M221.000000 -312.000000C228.000000 -339.000000,255.000000 -367.000000,273.000000 -382.000000C308.000000 -413.000000,337.000000 -420.000000,354.000000 -420.000000C394.000000 -420.000000,418.000000 -385.000000,418.000000 -326.000000C418.000000 -267.000000,385.000000 -152.000000,367.000000 -114.000000C333.000000 -44.000000,285.000000 -11.000000,248.000000 -11.000000C182.000000 -11.000000,169.000000 -94.000000,169.000000 -100.000000C169.000000 -102.000000,169.000000 -104.000000,172.000000 -116.000000"></path>
    </g>
  </defs>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,0.943863 8.036819)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi10_112"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,8.963745 10.427872)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi7_109"></use>
  </g>
</svg></span> given in the 3D object model coordinate system can
be transformed to a point <span title="4" style="vertical-align:-0.26474em" class="math"><!-- Created by MetaPost 1.902 on 2023.05.15:2033 --><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="1.06841em" height="0.767041em" viewBox="0 0 17.094620 12.272659">
<!-- Original BoundingBox: -8.547318 -6.136337 8.547302 6.136322 -->
  <defs>
    <g transform="scale(0.006974,0.006974)" id="GLYPHcmmi7_114">
      <path style="fill-rule: evenodd;" d="M235.000000 -202.000000C236.000000 -208.000000,259.000000 -298.000000,261.000000 -303.000000C263.000000 -311.000000,292.000000 -361.000000,324.000000 -385.000000C335.000000 -393.000000,362.000000 -413.000000,405.000000 -413.000000C415.000000 -413.000000,440.000000 -412.000000,460.000000 -399.000000C428.000000 -390.000000,416.000000 -362.000000,416.000000 -344.000000C416.000000 -322.000000,433.000000 -307.000000,456.000000 -307.000000C479.000000 -307.000000,512.000000 -326.000000,512.000000 -368.000000C512.000000 -420.000000,457.000000 -441.000000,406.000000 -441.000000C354.000000 -441.000000,309.000000 -420.000000,265.000000 -370.000000C247.000000 -431.000000,186.000000 -441.000000,162.000000 -441.000000C125.000000 -441.000000,100.000000 -418.000000,84.000000 -390.000000C61.000000 -351.000000,47.000000 -293.000000,47.000000 -288.000000C47.000000 -275.000000,61.000000 -275.000000,64.000000 -275.000000C78.000000 -275.000000,79.000000 -278.000000,86.000000 -305.000000C101.000000 -366.000000,120.000000 -413.000000,159.000000 -413.000000C185.000000 -413.000000,192.000000 -391.000000,192.000000 -364.000000C192.000000 -345.000000,183.000000 -308.000000,176.000000 -281.000000C169.000000 -254.000000,159.000000 -213.000000,154.000000 -191.000000L122.000000 -63.000000C118.000000 -50.000000,112.000000 -25.000000,112.000000 -22.000000C112.000000 -0.000000,130.000000 10.000000,146.000000 10.000000C161.000000 10.000000,181.000000 1.000000,189.000000 -19.000000C191.000000 -25.000000,202.000000 -69.000000,208.000000 -94.000000"></path>
    </g>
    <g transform="scale(0.009963,0.009963)" id="GLYPHcmmi10_112">
      <path style="fill-rule: evenodd;" d="M45.000000 122.000000C37.000000 156.000000,35.000000 163.000000,-9.000000 163.000000C-21.000000 163.000000,-32.000000 163.000000,-32.000000 182.000000C-32.000000 190.000000,-27.000000 194.000000,-19.000000 194.000000L65.000000 194.000000L8.000000 194.000000L37.000000 191.000000L65.000000 191.000000L98.000000 191.000000L132.000000 194.000000L164.000000 194.000000C169.000000 194.000000,182.000000 194.000000,182.000000 174.000000C182.000000 163.000000,172.000000 163.000000,158.000000 163.000000C108.000000 163.000000,108.000000 156.000000,108.000000 147.000000C108.000000 135.000000,150.000000 -28.000000,157.000000 -53.000000C170.000000 -24.000000,198.000000 11.000000,249.000000 11.000000C365.000000 11.000000,490.000000 -135.000000,490.000000 -282.000000C490.000000 -376.000000,433.000000 -442.000000,357.000000 -442.000000C307.000000 -442.000000,259.000000 -406.000000,226.000000 -367.000000C216.000000 -421.000000,173.000000 -442.000000,136.000000 -442.000000C90.000000 -442.000000,71.000000 -403.000000,62.000000 -385.000000C44.000000 -351.000000,31.000000 -291.000000,31.000000 -288.000000C31.000000 -278.000000,41.000000 -278.000000,43.000000 -278.000000C53.000000 -278.000000,54.000000 -279.000000,60.000000 -301.000000C77.000000 -372.000000,97.000000 -420.000000,133.000000 -420.000000C150.000000 -420.000000,164.000000 -412.000000,164.000000 -374.000000C164.000000 -351.000000,161.000000 -340.000000,157.000000 -323.000000M221.000000 -312.000000C228.000000 -339.000000,255.000000 -367.000000,273.000000 -382.000000C308.000000 -413.000000,337.000000 -420.000000,354.000000 -420.000000C394.000000 -420.000000,418.000000 -385.000000,418.000000 -326.000000C418.000000 -267.000000,385.000000 -152.000000,367.000000 -114.000000C333.000000 -44.000000,285.000000 -11.000000,248.000000 -11.000000C182.000000 -11.000000,169.000000 -94.000000,169.000000 -100.000000C169.000000 -102.000000,169.000000 -104.000000,172.000000 -116.000000"></path>
    </g>
  </defs>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,0.468674 8.036819)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi10_112"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,8.488556 10.427872)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi7_114"></use>
  </g>
</svg></span> in the reference
coordinate system of the 3D shape model by applying the following
formula:
</p>
<p><span title="5" class="displaymath"><!-- Created by MetaPost 1.902 on 2023.05.15:2033 --><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="7.48975em" height="1.12127em" viewBox="0 0 119.835968 17.940399">
<!-- Original BoundingBox: -59.917984 -8.970200 59.917984 8.970200 -->
  <defs>
    <g transform="scale(0.006974,0.006974)" id="GLYPHcmmi7_109">
      <path style="fill-rule: evenodd;" d="M434.000000 -81.000000C429.000000 -61.000000,420.000000 -27.000000,420.000000 -22.000000C420.000000 -0.000000,438.000000 10.000000,454.000000 10.000000C472.000000 10.000000,488.000000 -3.000000,493.000000 -12.000000C498.000000 -21.000000,506.000000 -53.000000,511.000000 -74.000000C516.000000 -93.000000,527.000000 -139.000000,533.000000 -164.000000C539.000000 -186.000000,545.000000 -208.000000,550.000000 -231.000000C561.000000 -274.000000,561.000000 -276.000000,581.000000 -307.000000C613.000000 -356.000000,663.000000 -413.000000,741.000000 -413.000000C797.000000 -413.000000,800.000000 -367.000000,800.000000 -343.000000C800.000000 -283.000000,757.000000 -172.000000,741.000000 -130.000000C730.000000 -102.000000,726.000000 -93.000000,726.000000 -76.000000C726.000000 -23.000000,770.000000 10.000000,821.000000 10.000000C921.000000 10.000000,965.000000 -128.000000,965.000000 -143.000000C965.000000 -156.000000,952.000000 -156.000000,949.000000 -156.000000C935.000000 -156.000000,934.000000 -150.000000,930.000000 -139.000000C907.000000 -59.000000,864.000000 -18.000000,824.000000 -18.000000C803.000000 -18.000000,799.000000 -32.000000,799.000000 -53.000000C799.000000 -76.000000,804.000000 -89.000000,822.000000 -134.000000C834.000000 -165.000000,875.000000 -271.000000,875.000000 -327.000000C875.000000 -343.000000,875.000000 -385.000000,838.000000 -414.000000C821.000000 -427.000000,792.000000 -441.000000,745.000000 -441.000000C655.000000 -441.000000,600.000000 -382.000000,568.000000 -340.000000C560.000000 -425.000000,489.000000 -441.000000,438.000000 -441.000000C355.000000 -441.000000,299.000000 -390.000000,269.000000 -350.000000C262.000000 -419.000000,203.000000 -441.000000,162.000000 -441.000000C119.000000 -441.000000,96.000000 -410.000000,83.000000 -387.000000C61.000000 -350.000000,47.000000 -293.000000,47.000000 -288.000000C47.000000 -275.000000,61.000000 -275.000000,64.000000 -275.000000C78.000000 -275.000000,79.000000 -278.000000,86.000000 -305.000000C101.000000 -364.000000,120.000000 -413.000000,159.000000 -413.000000C185.000000 -413.000000,192.000000 -391.000000,192.000000 -364.000000C192.000000 -345.000000,183.000000 -308.000000,176.000000 -281.000000C169.000000 -254.000000,159.000000 -213.000000,154.000000 -191.000000L122.000000 -63.000000C118.000000 -50.000000,112.000000 -25.000000,112.000000 -22.000000C112.000000 -0.000000,130.000000 10.000000,146.000000 10.000000C164.000000 10.000000,180.000000 -3.000000,185.000000 -12.000000C190.000000 -21.000000,198.000000 -53.000000,203.000000 -74.000000C208.000000 -93.000000,219.000000 -139.000000,225.000000 -164.000000C231.000000 -186.000000,237.000000 -208.000000,242.000000 -231.000000C253.000000 -272.000000,255.000000 -280.000000,284.000000 -321.000000C312.000000 -361.000000,359.000000 -413.000000,434.000000 -413.000000C492.000000 -413.000000,493.000000 -362.000000,493.000000 -343.000000C493.000000 -318.000000,490.000000 -305.000000,476.000000 -249.000000"></path>
    </g>
    <g transform="scale(0.006974,0.006974)" id="GLYPHcmmi7_114">
      <path style="fill-rule: evenodd;" d="M235.000000 -202.000000C236.000000 -208.000000,259.000000 -298.000000,261.000000 -303.000000C263.000000 -311.000000,292.000000 -361.000000,324.000000 -385.000000C335.000000 -393.000000,362.000000 -413.000000,405.000000 -413.000000C415.000000 -413.000000,440.000000 -412.000000,460.000000 -399.000000C428.000000 -390.000000,416.000000 -362.000000,416.000000 -344.000000C416.000000 -322.000000,433.000000 -307.000000,456.000000 -307.000000C479.000000 -307.000000,512.000000 -326.000000,512.000000 -368.000000C512.000000 -420.000000,457.000000 -441.000000,406.000000 -441.000000C354.000000 -441.000000,309.000000 -420.000000,265.000000 -370.000000C247.000000 -431.000000,186.000000 -441.000000,162.000000 -441.000000C125.000000 -441.000000,100.000000 -418.000000,84.000000 -390.000000C61.000000 -351.000000,47.000000 -293.000000,47.000000 -288.000000C47.000000 -275.000000,61.000000 -275.000000,64.000000 -275.000000C78.000000 -275.000000,79.000000 -278.000000,86.000000 -305.000000C101.000000 -366.000000,120.000000 -413.000000,159.000000 -413.000000C185.000000 -413.000000,192.000000 -391.000000,192.000000 -364.000000C192.000000 -345.000000,183.000000 -308.000000,176.000000 -281.000000C169.000000 -254.000000,159.000000 -213.000000,154.000000 -191.000000L122.000000 -63.000000C118.000000 -50.000000,112.000000 -25.000000,112.000000 -22.000000C112.000000 -0.000000,130.000000 10.000000,146.000000 10.000000C161.000000 10.000000,181.000000 1.000000,189.000000 -19.000000C191.000000 -25.000000,202.000000 -69.000000,208.000000 -94.000000"></path>
    </g>
    <g transform="scale(0.009963,0.009963)" id="GLYPHcmr10_40">
      <path style="fill-rule: evenodd;" d="M331.000000 240.000000C331.000000 237.000000,331.000000 235.000000,314.000000 218.000000C189.000000 92.000000,157.000000 -97.000000,157.000000 -250.000000C157.000000 -424.000000,195.000000 -598.000000,318.000000 -723.000000C331.000000 -735.000000,331.000000 -737.000000,331.000000 -740.000000C331.000000 -747.000000,327.000000 -750.000000,321.000000 -750.000000C311.000000 -750.000000,221.000000 -682.000000,162.000000 -555.000000C111.000000 -445.000000,99.000000 -334.000000,99.000000 -250.000000C99.000000 -172.000000,110.000000 -51.000000,165.000000 62.000000C225.000000 185.000000,311.000000 250.000000,321.000000 250.000000C327.000000 250.000000,331.000000 247.000000,331.000000 240.000000"></path>
    </g>
    <g transform="scale(0.009963,0.009963)" id="GLYPHcmr10_41">
      <path style="fill-rule: evenodd;" d="M289.000000 -250.000000C289.000000 -328.000000,278.000000 -449.000000,223.000000 -562.000000C163.000000 -685.000000,77.000000 -750.000000,67.000000 -750.000000C61.000000 -750.000000,57.000000 -746.000000,57.000000 -740.000000C57.000000 -737.000000,57.000000 -735.000000,76.000000 -717.000000C174.000000 -618.000000,231.000000 -459.000000,231.000000 -250.000000C231.000000 -79.000000,194.000000 97.000000,70.000000 223.000000C57.000000 235.000000,57.000000 237.000000,57.000000 240.000000C57.000000 246.000000,61.000000 250.000000,67.000000 250.000000C77.000000 250.000000,167.000000 182.000000,226.000000 55.000000C277.000000 -55.000000,289.000000 -166.000000,289.000000 -250.000000"></path>
    </g>
    <g transform="scale(0.009963,0.009963)" id="GLYPHcmr10_61">
      <path style="fill-rule: evenodd;" d="M687.000000 -327.000000C702.000000 -327.000000,721.000000 -327.000000,721.000000 -347.000000C721.000000 -367.000000,702.000000 -367.000000,688.000000 -367.000000L89.000000 -367.000000C75.000000 -367.000000,56.000000 -367.000000,56.000000 -347.000000C56.000000 -327.000000,75.000000 -327.000000,90.000000 -327.000000M688.000000 -133.000000C702.000000 -133.000000,721.000000 -133.000000,721.000000 -153.000000C721.000000 -173.000000,702.000000 -173.000000,687.000000 -173.000000L90.000000 -173.000000C75.000000 -173.000000,56.000000 -173.000000,56.000000 -153.000000C56.000000 -133.000000,75.000000 -133.000000,89.000000 -133.000000"></path>
    </g>
    <g transform="scale(0.009963,0.009963)" id="GLYPHcmsy10_0">
      <path style="fill-rule: evenodd;" d="M659.000000 -230.000000C676.000000 -230.000000,694.000000 -230.000000,694.000000 -250.000000C694.000000 -270.000000,676.000000 -270.000000,659.000000 -270.000000L118.000000 -270.000000C101.000000 -270.000000,83.000000 -270.000000,83.000000 -250.000000C83.000000 -230.000000,101.000000 -230.000000,118.000000 -230.000000"></path>
    </g>
    <g transform="scale(0.009963,0.009963)" id="GLYPHcmsy10_1">
      <path style="fill-rule: evenodd;" d="M192.000000 -250.000000C192.000000 -279.000000,168.000000 -303.000000,139.000000 -303.000000C110.000000 -303.000000,86.000000 -279.000000,86.000000 -250.000000C86.000000 -221.000000,110.000000 -197.000000,139.000000 -197.000000C168.000000 -197.000000,192.000000 -221.000000,192.000000 -250.000000"></path>
    </g>
    <g transform="scale(0.009963,0.009963)" id="GLYPHcmmi10_82">
      <path style="fill-rule: evenodd;" d="M375.000000 -614.000000C381.000000 -638.000000,384.000000 -648.000000,403.000000 -651.000000C412.000000 -652.000000,444.000000 -652.000000,464.000000 -652.000000C535.000000 -652.000000,646.000000 -652.000000,646.000000 -553.000000C646.000000 -519.000000,630.000000 -450.000000,591.000000 -411.000000C565.000000 -385.000000,512.000000 -353.000000,422.000000 -353.000000L310.000000 -353.000000M519.000000 -340.000000C620.000000 -362.000000,739.000000 -432.000000,739.000000 -533.000000C739.000000 -619.000000,649.000000 -683.000000,518.000000 -683.000000L233.000000 -683.000000C213.000000 -683.000000,204.000000 -683.000000,204.000000 -663.000000C204.000000 -652.000000,213.000000 -652.000000,232.000000 -652.000000C234.000000 -652.000000,253.000000 -652.000000,270.000000 -650.000000C288.000000 -648.000000,297.000000 -647.000000,297.000000 -634.000000C297.000000 -630.000000,296.000000 -627.000000,293.000000 -615.000000L159.000000 -78.000000C149.000000 -39.000000,147.000000 -31.000000,68.000000 -31.000000C50.000000 -31.000000,41.000000 -31.000000,41.000000 -11.000000C41.000000 -0.000000,53.000000 -0.000000,55.000000 -0.000000L181.000000 -0.000000L83.000000 -0.000000L153.000000 -3.000000L181.000000 -3.000000L209.000000 -3.000000L280.000000 -0.000000L308.000000 -0.000000C316.000000 -0.000000,328.000000 -0.000000,328.000000 -20.000000C328.000000 -31.000000,319.000000 -31.000000,300.000000 -31.000000C263.000000 -31.000000,235.000000 -31.000000,235.000000 -49.000000C235.000000 -55.000000,237.000000 -60.000000,238.000000 -66.000000L304.000000 -331.000000L423.000000 -331.000000C514.000000 -331.000000,532.000000 -275.000000,532.000000 -240.000000C532.000000 -225.000000,524.000000 -194.000000,518.000000 -171.000000C511.000000 -143.000000,502.000000 -106.000000,502.000000 -86.000000C502.000000 22.000000,622.000000 22.000000,635.000000 22.000000C720.000000 22.000000,755.000000 -79.000000,755.000000 -93.000000C755.000000 -105.000000,744.000000 -105.000000,743.000000 -105.000000C734.000000 -105.000000,732.000000 -98.000000,730.000000 -91.000000C705.000000 -17.000000,662.000000 -0.000000,639.000000 -0.000000C606.000000 -0.000000,599.000000 -22.000000,599.000000 -61.000000C599.000000 -92.000000,605.000000 -143.000000,609.000000 -175.000000C611.000000 -189.000000,613.000000 -208.000000,613.000000 -222.000000C613.000000 -299.000000,546.000000 -330.000000,519.000000 -340.000000"></path>
    </g>
    <g transform="scale(0.009963,0.009963)" id="GLYPHcmmi10_112">
      <path style="fill-rule: evenodd;" d="M45.000000 122.000000C37.000000 156.000000,35.000000 163.000000,-9.000000 163.000000C-21.000000 163.000000,-32.000000 163.000000,-32.000000 182.000000C-32.000000 190.000000,-27.000000 194.000000,-19.000000 194.000000L65.000000 194.000000L8.000000 194.000000L37.000000 191.000000L65.000000 191.000000L98.000000 191.000000L132.000000 194.000000L164.000000 194.000000C169.000000 194.000000,182.000000 194.000000,182.000000 174.000000C182.000000 163.000000,172.000000 163.000000,158.000000 163.000000C108.000000 163.000000,108.000000 156.000000,108.000000 147.000000C108.000000 135.000000,150.000000 -28.000000,157.000000 -53.000000C170.000000 -24.000000,198.000000 11.000000,249.000000 11.000000C365.000000 11.000000,490.000000 -135.000000,490.000000 -282.000000C490.000000 -376.000000,433.000000 -442.000000,357.000000 -442.000000C307.000000 -442.000000,259.000000 -406.000000,226.000000 -367.000000C216.000000 -421.000000,173.000000 -442.000000,136.000000 -442.000000C90.000000 -442.000000,71.000000 -403.000000,62.000000 -385.000000C44.000000 -351.000000,31.000000 -291.000000,31.000000 -288.000000C31.000000 -278.000000,41.000000 -278.000000,43.000000 -278.000000C53.000000 -278.000000,54.000000 -279.000000,60.000000 -301.000000C77.000000 -372.000000,97.000000 -420.000000,133.000000 -420.000000C150.000000 -420.000000,164.000000 -412.000000,164.000000 -374.000000C164.000000 -351.000000,161.000000 -340.000000,157.000000 -323.000000M221.000000 -312.000000C228.000000 -339.000000,255.000000 -367.000000,273.000000 -382.000000C308.000000 -413.000000,337.000000 -420.000000,354.000000 -420.000000C394.000000 -420.000000,418.000000 -385.000000,418.000000 -326.000000C418.000000 -267.000000,385.000000 -152.000000,367.000000 -114.000000C333.000000 -44.000000,285.000000 -11.000000,248.000000 -11.000000C182.000000 -11.000000,169.000000 -94.000000,169.000000 -100.000000C169.000000 -102.000000,169.000000 -104.000000,172.000000 -116.000000"></path>
    </g>
    <g transform="scale(0.009963,0.009963)" id="GLYPHcmmi10_116">
      <path style="fill-rule: evenodd;" d="M206.000000 -400.000000L300.000000 -400.000000C320.000000 -400.000000,330.000000 -400.000000,330.000000 -420.000000C330.000000 -431.000000,320.000000 -431.000000,302.000000 -431.000000L214.000000 -431.000000C250.000000 -573.000000,255.000000 -593.000000,255.000000 -599.000000C255.000000 -616.000000,243.000000 -626.000000,226.000000 -626.000000C223.000000 -626.000000,195.000000 -625.000000,186.000000 -590.000000L147.000000 -431.000000L53.000000 -431.000000C33.000000 -431.000000,23.000000 -431.000000,23.000000 -412.000000C23.000000 -400.000000,31.000000 -400.000000,51.000000 -400.000000L139.000000 -400.000000C67.000000 -116.000000,63.000000 -99.000000,63.000000 -81.000000C63.000000 -27.000000,101.000000 11.000000,155.000000 11.000000C257.000000 11.000000,314.000000 -135.000000,314.000000 -143.000000C314.000000 -153.000000,306.000000 -153.000000,302.000000 -153.000000C293.000000 -153.000000,292.000000 -150.000000,287.000000 -139.000000C244.000000 -35.000000,191.000000 -11.000000,157.000000 -11.000000C136.000000 -11.000000,126.000000 -24.000000,126.000000 -57.000000C126.000000 -81.000000,128.000000 -88.000000,132.000000 -105.000000"></path>
    </g>
  </defs>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,0.082016 11.985046)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi10_112"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,8.102036 14.376099)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi7_114"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,19.588486 11.985046)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmr10_61"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,36.414307 11.985046)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi10_82"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,52.182846 11.985046)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmsy10_1"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,60.152969 11.985046)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmr10_40"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,66.352020 11.985046)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi10_112"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,74.371902 14.376099)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi7_109"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,90.022522 11.985046)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmsy10_0"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,105.962738 11.985046)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi10_116"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,111.719086 11.985046)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmr10_41"></use>
  </g>
</svg></span>
</p>
<p>This transformation can be expressed by a homogeneous 3D
transformation matrix or alternatively in terms of a 3D pose. The
latter can be queried by passing <i><span data-if="hdevelop" style="display:inline">'reference_pose'</span><span data-if="c" style="display:none">"reference_pose"</span><span data-if="cpp" style="display:none">"reference_pose"</span><span data-if="com" style="display:none">"reference_pose"</span><span data-if="dotnet" style="display:none">"reference_pose"</span><span data-if="python" style="display:none">"reference_pose"</span></i> for the
parameter <code><span data-if="hdevelop" style="display:inline">GenParamName</span><span data-if="c" style="display:none">GenParamName</span><span data-if="cpp" style="display:none">GenParamName</span><span data-if="com" style="display:none">GenParamName</span><span data-if="dotnet" style="display:none">genParamName</span><span data-if="python" style="display:none">gen_param_name</span></code> of 该算子
<a href="get_shape_model_3d_params.html"><code><span data-if="hdevelop" style="display:inline">get_shape_model_3d_params</span><span data-if="c" style="display:none">get_shape_model_3d_params</span><span data-if="cpp" style="display:none">GetShapeModel3dParams</span><span data-if="com" style="display:none">GetShapeModel3dParams</span><span data-if="dotnet" style="display:none">GetShapeModel3dParams</span><span data-if="python" style="display:none">get_shape_model_3d_params</span></code></a>.  The above formula can be best
imagined as a pose of pose type 8, 10, or 12, depending on the value
that was chosen for <a href="#OrderOfRotation"><i><code><span data-if="hdevelop" style="display:inline">OrderOfRotation</span><span data-if="c" style="display:none">OrderOfRotation</span><span data-if="cpp" style="display:none">OrderOfRotation</span><span data-if="com" style="display:none">OrderOfRotation</span><span data-if="dotnet" style="display:none">orderOfRotation</span><span data-if="python" style="display:none">order_of_rotation</span></code></i></a> (see
<a href="create_pose.html"><code><span data-if="hdevelop" style="display:inline">create_pose</span><span data-if="c" style="display:none">create_pose</span><span data-if="cpp" style="display:none">CreatePose</span><span data-if="com" style="display:none">CreatePose</span><span data-if="dotnet" style="display:none">CreatePose</span><span data-if="python" style="display:none">create_pose</span></code></a> for detailed information about the different
pose types).  Note, however, that <a href="get_shape_model_3d_params.html"><code><span data-if="hdevelop" style="display:inline">get_shape_model_3d_params</span><span data-if="c" style="display:none">get_shape_model_3d_params</span><span data-if="cpp" style="display:none">GetShapeModel3dParams</span><span data-if="com" style="display:none">GetShapeModel3dParams</span><span data-if="dotnet" style="display:none">GetShapeModel3dParams</span><span data-if="python" style="display:none">get_shape_model_3d_params</span></code></a>
always returns the pose using the pose type 0.  Finally, poses that
are given in one of the two coordinate systems can be transformed to
the other coordinate system by using
<a href="trans_pose_shape_model_3d.html"><code><span data-if="hdevelop" style="display:inline">trans_pose_shape_model_3d</span><span data-if="c" style="display:none">trans_pose_shape_model_3d</span><span data-if="cpp" style="display:none">TransPoseShapeModel3d</span><span data-if="com" style="display:none">TransPoseShapeModel3d</span><span data-if="dotnet" style="display:none">TransPoseShapeModel3d</span><span data-if="python" style="display:none">trans_pose_shape_model_3d</span></code></a>.
</p>
<p>Furthermore, it should be noted that the reference coordinate system
is introduced only to specify the pose range in a convenient
way. The pose resulting from the 3D 匹配 that is performed with
<a href="find_shape_model_3d.html"><code><span data-if="hdevelop" style="display:inline">find_shape_model_3d</span><span data-if="c" style="display:none">find_shape_model_3d</span><span data-if="cpp" style="display:none">FindShapeModel3d</span><span data-if="com" style="display:none">FindShapeModel3d</span><span data-if="dotnet" style="display:none">FindShapeModel3d</span><span data-if="python" style="display:none">find_shape_model_3d</span></code></a> always refers to the original 3D object
model coordinate system used in the CAD file.
</p>
<p>With <a href="#MinContrast"><i><code><span data-if="hdevelop" style="display:inline">MinContrast</span><span data-if="c" style="display:none">MinContrast</span><span data-if="cpp" style="display:none">MinContrast</span><span data-if="com" style="display:none">MinContrast</span><span data-if="dotnet" style="display:none">minContrast</span><span data-if="python" style="display:none">min_contrast</span></code></i></a>, it can be determined which edge contrast
the model must at least have in the recognition performed by
<a href="find_shape_model_3d.html"><code><span data-if="hdevelop" style="display:inline">find_shape_model_3d</span><span data-if="c" style="display:none">find_shape_model_3d</span><span data-if="cpp" style="display:none">FindShapeModel3d</span><span data-if="com" style="display:none">FindShapeModel3d</span><span data-if="dotnet" style="display:none">FindShapeModel3d</span><span data-if="python" style="display:none">find_shape_model_3d</span></code></a>.  In other words, this parameter
separates the model from the noise in the image.  Therefore, a good
choice is the range of gray value changes caused by the noise in the
image.  If, for example, the gray values fluctuate within a range of
10 gray levels, <a href="#MinContrast"><i><code><span data-if="hdevelop" style="display:inline">MinContrast</span><span data-if="c" style="display:none">MinContrast</span><span data-if="cpp" style="display:none">MinContrast</span><span data-if="com" style="display:none">MinContrast</span><span data-if="dotnet" style="display:none">minContrast</span><span data-if="python" style="display:none">min_contrast</span></code></i></a> should be set to 10.  If
multichannel images are used for the search images, the noise in one
channel must be multiplied by the square root of the number of
channels to determine <a href="#MinContrast"><i><code><span data-if="hdevelop" style="display:inline">MinContrast</span><span data-if="c" style="display:none">MinContrast</span><span data-if="cpp" style="display:none">MinContrast</span><span data-if="com" style="display:none">MinContrast</span><span data-if="dotnet" style="display:none">minContrast</span><span data-if="python" style="display:none">min_contrast</span></code></i></a>.  If, for example, the
gray values fluctuate within a range of 10 gray levels in a single
channel and the image is a three-channel image, <a href="#MinContrast"><i><code><span data-if="hdevelop" style="display:inline">MinContrast</span><span data-if="c" style="display:none">MinContrast</span><span data-if="cpp" style="display:none">MinContrast</span><span data-if="com" style="display:none">MinContrast</span><span data-if="dotnet" style="display:none">minContrast</span><span data-if="python" style="display:none">min_contrast</span></code></i></a>
should be set to 17.  If the model should be recognized in very low
contrast images, <a href="#MinContrast"><i><code><span data-if="hdevelop" style="display:inline">MinContrast</span><span data-if="c" style="display:none">MinContrast</span><span data-if="cpp" style="display:none">MinContrast</span><span data-if="com" style="display:none">MinContrast</span><span data-if="dotnet" style="display:none">minContrast</span><span data-if="python" style="display:none">min_contrast</span></code></i></a> must be set to a
correspondingly small value.  If the model should be recognized even
if it is severely occluded, <a href="#MinContrast"><i><code><span data-if="hdevelop" style="display:inline">MinContrast</span><span data-if="c" style="display:none">MinContrast</span><span data-if="cpp" style="display:none">MinContrast</span><span data-if="com" style="display:none">MinContrast</span><span data-if="dotnet" style="display:none">minContrast</span><span data-if="python" style="display:none">min_contrast</span></code></i></a> should be slightly
larger than the range of gray value fluctuations created by noise in
order to ensure that the pose of the model is extracted robustly and
accurately by <a href="find_shape_model_3d.html"><code><span data-if="hdevelop" style="display:inline">find_shape_model_3d</span><span data-if="c" style="display:none">find_shape_model_3d</span><span data-if="cpp" style="display:none">FindShapeModel3d</span><span data-if="com" style="display:none">FindShapeModel3d</span><span data-if="dotnet" style="display:none">FindShapeModel3d</span><span data-if="python" style="display:none">find_shape_model_3d</span></code></a>.
</p>
<p>The parameters described above are application-dependent and must be
always specified when creating a 3D shape model. In addition, there
are some generic parameters that can optionally be used to influence
the model creation. For most applications these parameters need not
to be specified but can be left at their default values. If desired,
these parameters and their corresponding values can be specified by
using <a href="#GenParamName"><i><code><span data-if="hdevelop" style="display:inline">GenParamName</span><span data-if="c" style="display:none">GenParamName</span><span data-if="cpp" style="display:none">GenParamName</span><span data-if="com" style="display:none">GenParamName</span><span data-if="dotnet" style="display:none">genParamName</span><span data-if="python" style="display:none">gen_param_name</span></code></i></a> and <a href="#GenParamValue"><i><code><span data-if="hdevelop" style="display:inline">GenParamValue</span><span data-if="c" style="display:none">GenParamValue</span><span data-if="cpp" style="display:none">GenParamValue</span><span data-if="com" style="display:none">GenParamValue</span><span data-if="dotnet" style="display:none">genParamValue</span><span data-if="python" style="display:none">gen_param_value</span></code></i></a>,
respectively.  The following values for <a href="#GenParamName"><i><code><span data-if="hdevelop" style="display:inline">GenParamName</span><span data-if="c" style="display:none">GenParamName</span><span data-if="cpp" style="display:none">GenParamName</span><span data-if="com" style="display:none">GenParamName</span><span data-if="dotnet" style="display:none">genParamName</span><span data-if="python" style="display:none">gen_param_name</span></code></i></a> are
possible:
</p>
<dl class="generic">


<dt><b><i><span data-if="hdevelop" style="display:inline">'num_levels'</span><span data-if="c" style="display:none">"num_levels"</span><span data-if="cpp" style="display:none">"num_levels"</span><span data-if="com" style="display:none">"num_levels"</span><span data-if="dotnet" style="display:none">"num_levels"</span><span data-if="python" style="display:none">"num_levels"</span></i>:</b></dt>
<dd>
<p>
 For efficiency reasons
the model views are generated on multiple pyramid levels. On
higher levels fewer views are generated than on lower levels. With
the parameter <i><span data-if="hdevelop" style="display:inline">'num_levels'</span><span data-if="c" style="display:none">"num_levels"</span><span data-if="cpp" style="display:none">"num_levels"</span><span data-if="com" style="display:none">"num_levels"</span><span data-if="dotnet" style="display:none">"num_levels"</span><span data-if="python" style="display:none">"num_levels"</span></i> the number of pyramid levels
on which model views are generated can be specified. It should be
chosen as large as possible because by this the time necessary to
find the model is significantly reduced.  On the other hand, the
number of levels must be chosen such that the shape
representations of the views on the highest pyramid level are
still recognizable and contain a sufficient number of points (at
least four).  If not enough model points are generated for a
certain view, the view is deleted from the model and replaced by a
view on a lower pyramid level.  If for all views on a pyramid
level not enough model points are generated, the number of levels
is reduced internally until for at least one view enough model
points are found on the highest pyramid level.  If this procedure
would lead to a model with no pyramid levels, i.e., if the number
of model points is too small for all views already on the lowest
pyramid level, <code><span data-if="hdevelop" style="display:inline">create_shape_model_3d</span><span data-if="c" style="display:none">create_shape_model_3d</span><span data-if="cpp" style="display:none">CreateShapeModel3d</span><span data-if="com" style="display:none">CreateShapeModel3d</span><span data-if="dotnet" style="display:none">CreateShapeModel3d</span><span data-if="python" style="display:none">create_shape_model_3d</span></code> returns an error
message.  If <i><span data-if="hdevelop" style="display:inline">'num_levels'</span><span data-if="c" style="display:none">"num_levels"</span><span data-if="cpp" style="display:none">"num_levels"</span><span data-if="com" style="display:none">"num_levels"</span><span data-if="dotnet" style="display:none">"num_levels"</span><span data-if="python" style="display:none">"num_levels"</span></i> is set to <i><span data-if="hdevelop" style="display:inline">'auto'</span><span data-if="c" style="display:none">"auto"</span><span data-if="cpp" style="display:none">"auto"</span><span data-if="com" style="display:none">"auto"</span><span data-if="dotnet" style="display:none">"auto"</span><span data-if="python" style="display:none">"auto"</span></i>
(default value), <code><span data-if="hdevelop" style="display:inline">create_shape_model_3d</span><span data-if="c" style="display:none">create_shape_model_3d</span><span data-if="cpp" style="display:none">CreateShapeModel3d</span><span data-if="com" style="display:none">CreateShapeModel3d</span><span data-if="dotnet" style="display:none">CreateShapeModel3d</span><span data-if="python" style="display:none">create_shape_model_3d</span></code> determines the
number of pyramid levels automatically.  In this case all model
views on all pyramid levels are automatically checked whether
their shape representations are still recognizable. If the shape
representation of a certain view is found to be not recognizable,
the view is deleted from the model and replaced by a view on a
lower pyramid level. Note that if <i><span data-if="hdevelop" style="display:inline">'num_levels'</span><span data-if="c" style="display:none">"num_levels"</span><span data-if="cpp" style="display:none">"num_levels"</span><span data-if="com" style="display:none">"num_levels"</span><span data-if="dotnet" style="display:none">"num_levels"</span><span data-if="python" style="display:none">"num_levels"</span></i> is set to
<i><span data-if="hdevelop" style="display:inline">'auto'</span><span data-if="c" style="display:none">"auto"</span><span data-if="cpp" style="display:none">"auto"</span><span data-if="com" style="display:none">"auto"</span><span data-if="dotnet" style="display:none">"auto"</span><span data-if="python" style="display:none">"auto"</span></i>, the number of pyramid levels can be different for
different views.  In rare cases, it might happen that
<code><span data-if="hdevelop" style="display:inline">create_shape_model_3d</span><span data-if="c" style="display:none">create_shape_model_3d</span><span data-if="cpp" style="display:none">CreateShapeModel3d</span><span data-if="com" style="display:none">CreateShapeModel3d</span><span data-if="dotnet" style="display:none">CreateShapeModel3d</span><span data-if="python" style="display:none">create_shape_model_3d</span></code> determines a value for the number of
pyramid levels that is too large or too small.  If the number of
pyramid levels is chosen too large, the model may not be
recognized in the image or it may be necessary to select very low
parameters for <code><span data-if="hdevelop" style="display:inline">MinScore</span><span data-if="c" style="display:none">MinScore</span><span data-if="cpp" style="display:none">MinScore</span><span data-if="com" style="display:none">MinScore</span><span data-if="dotnet" style="display:none">minScore</span><span data-if="python" style="display:none">min_score</span></code> or <code><span data-if="hdevelop" style="display:inline">Greediness</span><span data-if="c" style="display:none">Greediness</span><span data-if="cpp" style="display:none">Greediness</span><span data-if="com" style="display:none">Greediness</span><span data-if="dotnet" style="display:none">greediness</span><span data-if="python" style="display:none">greediness</span></code> in
<a href="find_shape_model_3d.html"><code><span data-if="hdevelop" style="display:inline">find_shape_model_3d</span><span data-if="c" style="display:none">find_shape_model_3d</span><span data-if="cpp" style="display:none">FindShapeModel3d</span><span data-if="com" style="display:none">FindShapeModel3d</span><span data-if="dotnet" style="display:none">FindShapeModel3d</span><span data-if="python" style="display:none">find_shape_model_3d</span></code></a> in order to find the model.  If the
number of pyramid levels is chosen too small, the time required to
find the model in <a href="find_shape_model_3d.html"><code><span data-if="hdevelop" style="display:inline">find_shape_model_3d</span><span data-if="c" style="display:none">find_shape_model_3d</span><span data-if="cpp" style="display:none">FindShapeModel3d</span><span data-if="com" style="display:none">FindShapeModel3d</span><span data-if="dotnet" style="display:none">FindShapeModel3d</span><span data-if="python" style="display:none">find_shape_model_3d</span></code></a> may increase.  In
these cases, the views on the pyramid levels should be checked by
using the output of <a href="get_shape_model_3d_contours.html"><code><span data-if="hdevelop" style="display:inline">get_shape_model_3d_contours</span><span data-if="c" style="display:none">get_shape_model_3d_contours</span><span data-if="cpp" style="display:none">GetShapeModel3dContours</span><span data-if="com" style="display:none">GetShapeModel3dContours</span><span data-if="dotnet" style="display:none">GetShapeModel3dContours</span><span data-if="python" style="display:none">get_shape_model_3d_contours</span></code></a>.</p>
<p>
<i>Suggested values:</i> <i><span data-if="hdevelop" style="display:inline">'auto'</span><span data-if="c" style="display:none">"auto"</span><span data-if="cpp" style="display:none">"auto"</span><span data-if="com" style="display:none">"auto"</span><span data-if="dotnet" style="display:none">"auto"</span><span data-if="python" style="display:none">"auto"</span></i>, <i>3</i>,
<i>4</i>, <i>5</i>, <i>6</i> </p>
<p>
<i>Default value:</i> <i><span data-if="hdevelop" style="display:inline">'auto'</span><span data-if="c" style="display:none">"auto"</span><span data-if="cpp" style="display:none">"auto"</span><span data-if="com" style="display:none">"auto"</span><span data-if="dotnet" style="display:none">"auto"</span><span data-if="python" style="display:none">"auto"</span></i>
</p>
</dd>

<dt><b><i><span data-if="hdevelop" style="display:inline">'fast_pose_refinement'</span><span data-if="c" style="display:none">"fast_pose_refinement"</span><span data-if="cpp" style="display:none">"fast_pose_refinement"</span><span data-if="com" style="display:none">"fast_pose_refinement"</span><span data-if="dotnet" style="display:none">"fast_pose_refinement"</span><span data-if="python" style="display:none">"fast_pose_refinement"</span></i>:</b></dt>
<dd>
<p>
 The parameter
specifies whether the pose refinement during the search with
<a href="find_shape_model_3d.html"><code><span data-if="hdevelop" style="display:inline">find_shape_model_3d</span><span data-if="c" style="display:none">find_shape_model_3d</span><span data-if="cpp" style="display:none">FindShapeModel3d</span><span data-if="com" style="display:none">FindShapeModel3d</span><span data-if="dotnet" style="display:none">FindShapeModel3d</span><span data-if="python" style="display:none">find_shape_model_3d</span></code></a> is sped up. If
<i><span data-if="hdevelop" style="display:inline">'fast_pose_refinement'</span><span data-if="c" style="display:none">"fast_pose_refinement"</span><span data-if="cpp" style="display:none">"fast_pose_refinement"</span><span data-if="com" style="display:none">"fast_pose_refinement"</span><span data-if="dotnet" style="display:none">"fast_pose_refinement"</span><span data-if="python" style="display:none">"fast_pose_refinement"</span></i> is set to <i><span data-if="hdevelop" style="display:inline">'false'</span><span data-if="c" style="display:none">"false"</span><span data-if="cpp" style="display:none">"false"</span><span data-if="com" style="display:none">"false"</span><span data-if="dotnet" style="display:none">"false"</span><span data-if="python" style="display:none">"false"</span></i>, for
complex models with a large number of faces the pose refinement
step might amount to a significant part of the overall computation
time.  If <i><span data-if="hdevelop" style="display:inline">'fast_pose_refinement'</span><span data-if="c" style="display:none">"fast_pose_refinement"</span><span data-if="cpp" style="display:none">"fast_pose_refinement"</span><span data-if="com" style="display:none">"fast_pose_refinement"</span><span data-if="dotnet" style="display:none">"fast_pose_refinement"</span><span data-if="python" style="display:none">"fast_pose_refinement"</span></i> is set to
<i><span data-if="hdevelop" style="display:inline">'true'</span><span data-if="c" style="display:none">"true"</span><span data-if="cpp" style="display:none">"true"</span><span data-if="com" style="display:none">"true"</span><span data-if="dotnet" style="display:none">"true"</span><span data-if="python" style="display:none">"true"</span></i>, some of the calculations that are necessary
during the pose refinement are already performed during the model
generation and stored in the model. Consequently, the pose
refinement during the search will be faster. Please note, however,
that in this case the memory consumption of the model may increase
significantly (typically by less than 30 percent).
Further note that the resulting poses that are returned by
<a href="find_shape_model_3d.html"><code><span data-if="hdevelop" style="display:inline">find_shape_model_3d</span><span data-if="c" style="display:none">find_shape_model_3d</span><span data-if="cpp" style="display:none">FindShapeModel3d</span><span data-if="com" style="display:none">FindShapeModel3d</span><span data-if="dotnet" style="display:none">FindShapeModel3d</span><span data-if="python" style="display:none">find_shape_model_3d</span></code></a> might slightly differ depending on the
value of <i><span data-if="hdevelop" style="display:inline">'fast_pose_refinement'</span><span data-if="c" style="display:none">"fast_pose_refinement"</span><span data-if="cpp" style="display:none">"fast_pose_refinement"</span><span data-if="com" style="display:none">"fast_pose_refinement"</span><span data-if="dotnet" style="display:none">"fast_pose_refinement"</span><span data-if="python" style="display:none">"fast_pose_refinement"</span></i>, because internally the
pose refinement is approximated if the parameter is set to
<i><span data-if="hdevelop" style="display:inline">'true'</span><span data-if="c" style="display:none">"true"</span><span data-if="cpp" style="display:none">"true"</span><span data-if="com" style="display:none">"true"</span><span data-if="dotnet" style="display:none">"true"</span><span data-if="python" style="display:none">"true"</span></i>.</p>
<p>
<i>List of values:</i> <i><span data-if="hdevelop" style="display:inline">'true'</span><span data-if="c" style="display:none">"true"</span><span data-if="cpp" style="display:none">"true"</span><span data-if="com" style="display:none">"true"</span><span data-if="dotnet" style="display:none">"true"</span><span data-if="python" style="display:none">"true"</span></i>, <i><span data-if="hdevelop" style="display:inline">'false'</span><span data-if="c" style="display:none">"false"</span><span data-if="cpp" style="display:none">"false"</span><span data-if="com" style="display:none">"false"</span><span data-if="dotnet" style="display:none">"false"</span><span data-if="python" style="display:none">"false"</span></i> </p>
<p>
<i>Default value:</i> <i><span data-if="hdevelop" style="display:inline">'true'</span><span data-if="c" style="display:none">"true"</span><span data-if="cpp" style="display:none">"true"</span><span data-if="com" style="display:none">"true"</span><span data-if="dotnet" style="display:none">"true"</span><span data-if="python" style="display:none">"true"</span></i>
</p>
</dd>

<dt><b><i><span data-if="hdevelop" style="display:inline">'lowest_model_level'</span><span data-if="c" style="display:none">"lowest_model_level"</span><span data-if="cpp" style="display:none">"lowest_model_level"</span><span data-if="com" style="display:none">"lowest_model_level"</span><span data-if="dotnet" style="display:none">"lowest_model_level"</span><span data-if="python" style="display:none">"lowest_model_level"</span></i>:</b></dt>
<dd>
<p>
 In some cases the model
generation process might be very time consuming and the memory
consumption of the model might be very high.  The reason for this
is that in these cases the number of views, which must be computed
and stored in the model, is very high.  The larger the pose range
is chosen and the larger the objects appear in the image (measured
in pixels) the more views are necessary.  Consequently, especially
the use of large images (e.g., images exceeding a size of
 640×480 ) can result in very large models.
Because the number of views is highest on lower pyramid levels,
the parameter <i><span data-if="hdevelop" style="display:inline">'lowest_model_level'</span><span data-if="c" style="display:none">"lowest_model_level"</span><span data-if="cpp" style="display:none">"lowest_model_level"</span><span data-if="com" style="display:none">"lowest_model_level"</span><span data-if="dotnet" style="display:none">"lowest_model_level"</span><span data-if="python" style="display:none">"lowest_model_level"</span></i> can be used to exclude
the lower pyramid levels from the generation of views.  The value
that is passed for <i><span data-if="hdevelop" style="display:inline">'lowest_model_level'</span><span data-if="c" style="display:none">"lowest_model_level"</span><span data-if="cpp" style="display:none">"lowest_model_level"</span><span data-if="com" style="display:none">"lowest_model_level"</span><span data-if="dotnet" style="display:none">"lowest_model_level"</span><span data-if="python" style="display:none">"lowest_model_level"</span></i> determines the
lowest pyramid level down to which views are generated and stored
in the 3d shape model.  If, for example, a value of <i>2</i> is
passed for large models, the time to generate the model as well as
the size of the resulting model is reduced to approximately one
third of the original values.  If <i><span data-if="hdevelop" style="display:inline">'lowest_model_level'</span><span data-if="c" style="display:none">"lowest_model_level"</span><span data-if="cpp" style="display:none">"lowest_model_level"</span><span data-if="com" style="display:none">"lowest_model_level"</span><span data-if="dotnet" style="display:none">"lowest_model_level"</span><span data-if="python" style="display:none">"lowest_model_level"</span></i> is
not passed, views are generated for all pyramid levels, which
corresponds to the behavior when passing a value of <i>1</i> for
<i><span data-if="hdevelop" style="display:inline">'lowest_model_level'</span><span data-if="c" style="display:none">"lowest_model_level"</span><span data-if="cpp" style="display:none">"lowest_model_level"</span><span data-if="com" style="display:none">"lowest_model_level"</span><span data-if="dotnet" style="display:none">"lowest_model_level"</span><span data-if="python" style="display:none">"lowest_model_level"</span></i>.  If for
<i><span data-if="hdevelop" style="display:inline">'lowest_model_level'</span><span data-if="c" style="display:none">"lowest_model_level"</span><span data-if="cpp" style="display:none">"lowest_model_level"</span><span data-if="com" style="display:none">"lowest_model_level"</span><span data-if="dotnet" style="display:none">"lowest_model_level"</span><span data-if="python" style="display:none">"lowest_model_level"</span></i> a value larger than <i>1</i> is
passed, in <a href="find_shape_model_3d.html"><code><span data-if="hdevelop" style="display:inline">find_shape_model_3d</span><span data-if="c" style="display:none">find_shape_model_3d</span><span data-if="cpp" style="display:none">FindShapeModel3d</span><span data-if="com" style="display:none">FindShapeModel3d</span><span data-if="dotnet" style="display:none">FindShapeModel3d</span><span data-if="python" style="display:none">find_shape_model_3d</span></code></a> the tracking of matches
through the pyramid will be stopped at this level.  However, if in
<a href="find_shape_model_3d.html"><code><span data-if="hdevelop" style="display:inline">find_shape_model_3d</span><span data-if="c" style="display:none">find_shape_model_3d</span><span data-if="cpp" style="display:none">FindShapeModel3d</span><span data-if="com" style="display:none">FindShapeModel3d</span><span data-if="dotnet" style="display:none">FindShapeModel3d</span><span data-if="python" style="display:none">find_shape_model_3d</span></code></a> a least-squares adjustment is chosen
for pose refinement, the matches are refined on the lowest pyramid
level using the least-squares adjustment.  Note that for different
values for <i><span data-if="hdevelop" style="display:inline">'lowest_model_level'</span><span data-if="c" style="display:none">"lowest_model_level"</span><span data-if="cpp" style="display:none">"lowest_model_level"</span><span data-if="com" style="display:none">"lowest_model_level"</span><span data-if="dotnet" style="display:none">"lowest_model_level"</span><span data-if="python" style="display:none">"lowest_model_level"</span></i> different matches might
be found during the search.  Furthermore, the score of the matches
depends on the chosen method for pose refinement.  Also note that
the higher <i><span data-if="hdevelop" style="display:inline">'lowest_model_level'</span><span data-if="c" style="display:none">"lowest_model_level"</span><span data-if="cpp" style="display:none">"lowest_model_level"</span><span data-if="com" style="display:none">"lowest_model_level"</span><span data-if="dotnet" style="display:none">"lowest_model_level"</span><span data-if="python" style="display:none">"lowest_model_level"</span></i> is chosen the higher the
portion of the refinement step with respect to the overall
run-time of <a href="find_shape_model_3d.html"><code><span data-if="hdevelop" style="display:inline">find_shape_model_3d</span><span data-if="c" style="display:none">find_shape_model_3d</span><span data-if="cpp" style="display:none">FindShapeModel3d</span><span data-if="com" style="display:none">FindShapeModel3d</span><span data-if="dotnet" style="display:none">FindShapeModel3d</span><span data-if="python" style="display:none">find_shape_model_3d</span></code></a> will be.  As a consequence
for higher values of <i><span data-if="hdevelop" style="display:inline">'lowest_model_level'</span><span data-if="c" style="display:none">"lowest_model_level"</span><span data-if="cpp" style="display:none">"lowest_model_level"</span><span data-if="com" style="display:none">"lowest_model_level"</span><span data-if="dotnet" style="display:none">"lowest_model_level"</span><span data-if="python" style="display:none">"lowest_model_level"</span></i> the influence
of the generic parameter <i><span data-if="hdevelop" style="display:inline">'fast_pose_refinement'</span><span data-if="c" style="display:none">"fast_pose_refinement"</span><span data-if="cpp" style="display:none">"fast_pose_refinement"</span><span data-if="com" style="display:none">"fast_pose_refinement"</span><span data-if="dotnet" style="display:none">"fast_pose_refinement"</span><span data-if="python" style="display:none">"fast_pose_refinement"</span></i> (see
above) on the runtime will increase.  A large value for
<i><span data-if="hdevelop" style="display:inline">'lowest_model_level'</span><span data-if="c" style="display:none">"lowest_model_level"</span><span data-if="cpp" style="display:none">"lowest_model_level"</span><span data-if="com" style="display:none">"lowest_model_level"</span><span data-if="dotnet" style="display:none">"lowest_model_level"</span><span data-if="python" style="display:none">"lowest_model_level"</span></i> on the one hand may lead to long
computation times of <a href="find_shape_model_3d.html"><code><span data-if="hdevelop" style="display:inline">find_shape_model_3d</span><span data-if="c" style="display:none">find_shape_model_3d</span><span data-if="cpp" style="display:none">FindShapeModel3d</span><span data-if="com" style="display:none">FindShapeModel3d</span><span data-if="dotnet" style="display:none">FindShapeModel3d</span><span data-if="python" style="display:none">find_shape_model_3d</span></code></a> if
<i><span data-if="hdevelop" style="display:inline">'fast_pose_refinement'</span><span data-if="c" style="display:none">"fast_pose_refinement"</span><span data-if="cpp" style="display:none">"fast_pose_refinement"</span><span data-if="com" style="display:none">"fast_pose_refinement"</span><span data-if="dotnet" style="display:none">"fast_pose_refinement"</span><span data-if="python" style="display:none">"fast_pose_refinement"</span></i> is switches off
(<i><span data-if="hdevelop" style="display:inline">'false'</span><span data-if="c" style="display:none">"false"</span><span data-if="cpp" style="display:none">"false"</span><span data-if="com" style="display:none">"false"</span><span data-if="dotnet" style="display:none">"false"</span><span data-if="python" style="display:none">"false"</span></i>). On the other hand it may lead to a decreased
accuracy if <i><span data-if="hdevelop" style="display:inline">'fast_pose_refinement'</span><span data-if="c" style="display:none">"fast_pose_refinement"</span><span data-if="cpp" style="display:none">"fast_pose_refinement"</span><span data-if="com" style="display:none">"fast_pose_refinement"</span><span data-if="dotnet" style="display:none">"fast_pose_refinement"</span><span data-if="python" style="display:none">"fast_pose_refinement"</span></i> is switches on
(<i><span data-if="hdevelop" style="display:inline">'true'</span><span data-if="c" style="display:none">"true"</span><span data-if="cpp" style="display:none">"true"</span><span data-if="com" style="display:none">"true"</span><span data-if="dotnet" style="display:none">"true"</span><span data-if="python" style="display:none">"true"</span></i>) because in this mode the pose refinement is only
approximated. Therefore, the value for
<i><span data-if="hdevelop" style="display:inline">'lowest_model_level'</span><span data-if="c" style="display:none">"lowest_model_level"</span><span data-if="cpp" style="display:none">"lowest_model_level"</span><span data-if="com" style="display:none">"lowest_model_level"</span><span data-if="dotnet" style="display:none">"lowest_model_level"</span><span data-if="python" style="display:none">"lowest_model_level"</span></i> should be chosen as small as
possible.  Furthermore, <i><span data-if="hdevelop" style="display:inline">'lowest_model_level'</span><span data-if="c" style="display:none">"lowest_model_level"</span><span data-if="cpp" style="display:none">"lowest_model_level"</span><span data-if="com" style="display:none">"lowest_model_level"</span><span data-if="dotnet" style="display:none">"lowest_model_level"</span><span data-if="python" style="display:none">"lowest_model_level"</span></i> should be
chosen small enough such that the edges of the 3D object model
are still observable on this level.</p>
<p>
<i>Suggested values:</i> <i>1</i>, <i>2</i>, <i>3</i></p>
<p>
<i>Default value:</i> <i>1</i>
</p>
</dd>

<dt><b><i><span data-if="hdevelop" style="display:inline">'optimization'</span><span data-if="c" style="display:none">"optimization"</span><span data-if="cpp" style="display:none">"optimization"</span><span data-if="com" style="display:none">"optimization"</span><span data-if="dotnet" style="display:none">"optimization"</span><span data-if="python" style="display:none">"optimization"</span></i>:</b></dt>
<dd>
<p>

For models with particularly large model views, it may be useful
to reduce the number of model points by setting
<i><span data-if="hdevelop" style="display:inline">'optimization'</span><span data-if="c" style="display:none">"optimization"</span><span data-if="cpp" style="display:none">"optimization"</span><span data-if="com" style="display:none">"optimization"</span><span data-if="dotnet" style="display:none">"optimization"</span><span data-if="python" style="display:none">"optimization"</span></i> to a value different from <i><span data-if="hdevelop" style="display:inline">'none'</span><span data-if="c" style="display:none">"none"</span><span data-if="cpp" style="display:none">"none"</span><span data-if="com" style="display:none">"none"</span><span data-if="dotnet" style="display:none">"none"</span><span data-if="python" style="display:none">"none"</span></i>.
If <i><span data-if="hdevelop" style="display:inline">'optimization'</span><span data-if="c" style="display:none">"optimization"</span><span data-if="cpp" style="display:none">"optimization"</span><span data-if="com" style="display:none">"optimization"</span><span data-if="dotnet" style="display:none">"optimization"</span><span data-if="python" style="display:none">"optimization"</span></i> = <i><span data-if="hdevelop" style="display:inline">'none'</span><span data-if="c" style="display:none">"none"</span><span data-if="cpp" style="display:none">"none"</span><span data-if="com" style="display:none">"none"</span><span data-if="dotnet" style="display:none">"none"</span><span data-if="python" style="display:none">"none"</span></i>, all model points
are stored.  In all other cases, the number of points is reduced
according to the value of <i><span data-if="hdevelop" style="display:inline">'optimization'</span><span data-if="c" style="display:none">"optimization"</span><span data-if="cpp" style="display:none">"optimization"</span><span data-if="com" style="display:none">"optimization"</span><span data-if="dotnet" style="display:none">"optimization"</span><span data-if="python" style="display:none">"optimization"</span></i>.  If the number
of points is reduced, it may be necessary in
<a href="find_shape_model_3d.html"><code><span data-if="hdevelop" style="display:inline">find_shape_model_3d</span><span data-if="c" style="display:none">find_shape_model_3d</span><span data-if="cpp" style="display:none">FindShapeModel3d</span><span data-if="com" style="display:none">FindShapeModel3d</span><span data-if="dotnet" style="display:none">FindShapeModel3d</span><span data-if="python" style="display:none">find_shape_model_3d</span></code></a> to set the parameter
<code><span data-if="hdevelop" style="display:inline">Greediness</span><span data-if="c" style="display:none">Greediness</span><span data-if="cpp" style="display:none">Greediness</span><span data-if="com" style="display:none">Greediness</span><span data-if="dotnet" style="display:none">greediness</span><span data-if="python" style="display:none">greediness</span></code> to a smaller value, e.g., 0.7 or 0.8.  For
models with small model views, the reduction of the number of
model points does not result in a speed-up of the search because
in this case usually significantly more potential instances of the
model must be examined.  If <i><span data-if="hdevelop" style="display:inline">'optimization'</span><span data-if="c" style="display:none">"optimization"</span><span data-if="cpp" style="display:none">"optimization"</span><span data-if="com" style="display:none">"optimization"</span><span data-if="dotnet" style="display:none">"optimization"</span><span data-if="python" style="display:none">"optimization"</span></i> is set to
<i><span data-if="hdevelop" style="display:inline">'auto'</span><span data-if="c" style="display:none">"auto"</span><span data-if="cpp" style="display:none">"auto"</span><span data-if="com" style="display:none">"auto"</span><span data-if="dotnet" style="display:none">"auto"</span><span data-if="python" style="display:none">"auto"</span></i>, <code><span data-if="hdevelop" style="display:inline">create_shape_model_3d</span><span data-if="c" style="display:none">create_shape_model_3d</span><span data-if="cpp" style="display:none">CreateShapeModel3d</span><span data-if="com" style="display:none">CreateShapeModel3d</span><span data-if="dotnet" style="display:none">CreateShapeModel3d</span><span data-if="python" style="display:none">create_shape_model_3d</span></code> automatically
determines the reduction of the number of model points for each
model view.</p>
<p>
<i>List of values:</i> <i><span data-if="hdevelop" style="display:inline">'auto'</span><span data-if="c" style="display:none">"auto"</span><span data-if="cpp" style="display:none">"auto"</span><span data-if="com" style="display:none">"auto"</span><span data-if="dotnet" style="display:none">"auto"</span><span data-if="python" style="display:none">"auto"</span></i>,
<i><span data-if="hdevelop" style="display:inline">'none'</span><span data-if="c" style="display:none">"none"</span><span data-if="cpp" style="display:none">"none"</span><span data-if="com" style="display:none">"none"</span><span data-if="dotnet" style="display:none">"none"</span><span data-if="python" style="display:none">"none"</span></i>, <i><span data-if="hdevelop" style="display:inline">'point_reduction_low'</span><span data-if="c" style="display:none">"point_reduction_low"</span><span data-if="cpp" style="display:none">"point_reduction_low"</span><span data-if="com" style="display:none">"point_reduction_low"</span><span data-if="dotnet" style="display:none">"point_reduction_low"</span><span data-if="python" style="display:none">"point_reduction_low"</span></i>,
<i><span data-if="hdevelop" style="display:inline">'point_reduction_medium'</span><span data-if="c" style="display:none">"point_reduction_medium"</span><span data-if="cpp" style="display:none">"point_reduction_medium"</span><span data-if="com" style="display:none">"point_reduction_medium"</span><span data-if="dotnet" style="display:none">"point_reduction_medium"</span><span data-if="python" style="display:none">"point_reduction_medium"</span></i>, <i><span data-if="hdevelop" style="display:inline">'point_reduction_high'</span><span data-if="c" style="display:none">"point_reduction_high"</span><span data-if="cpp" style="display:none">"point_reduction_high"</span><span data-if="com" style="display:none">"point_reduction_high"</span><span data-if="dotnet" style="display:none">"point_reduction_high"</span><span data-if="python" style="display:none">"point_reduction_high"</span></i> </p>
<p>
<i>Default value:</i> <i><span data-if="hdevelop" style="display:inline">'auto'</span><span data-if="c" style="display:none">"auto"</span><span data-if="cpp" style="display:none">"auto"</span><span data-if="com" style="display:none">"auto"</span><span data-if="dotnet" style="display:none">"auto"</span><span data-if="python" style="display:none">"auto"</span></i>
</p>
</dd>

<dt><b><i><span data-if="hdevelop" style="display:inline">'metric'</span><span data-if="c" style="display:none">"metric"</span><span data-if="cpp" style="display:none">"metric"</span><span data-if="com" style="display:none">"metric"</span><span data-if="dotnet" style="display:none">"metric"</span><span data-if="python" style="display:none">"metric"</span></i>:</b></dt>
<dd>
<p>
 This parameter determines the conditions
under which the model is recognized in the image. If
<i><span data-if="hdevelop" style="display:inline">'metric'</span><span data-if="c" style="display:none">"metric"</span><span data-if="cpp" style="display:none">"metric"</span><span data-if="com" style="display:none">"metric"</span><span data-if="dotnet" style="display:none">"metric"</span><span data-if="python" style="display:none">"metric"</span></i> = <i><span data-if="hdevelop" style="display:inline">'ignore_part_polarity'</span><span data-if="c" style="display:none">"ignore_part_polarity"</span><span data-if="cpp" style="display:none">"ignore_part_polarity"</span><span data-if="com" style="display:none">"ignore_part_polarity"</span><span data-if="dotnet" style="display:none">"ignore_part_polarity"</span><span data-if="python" style="display:none">"ignore_part_polarity"</span></i>, the
contrast polarity is allowed to change only between different
parts of the model, whereas the polarity of model points that are
within the same model part must not change.  Please note that the
term <i><span data-if="hdevelop" style="display:inline">'ignore_part_polarity'</span><span data-if="c" style="display:none">"ignore_part_polarity"</span><span data-if="cpp" style="display:none">"ignore_part_polarity"</span><span data-if="com" style="display:none">"ignore_part_polarity"</span><span data-if="dotnet" style="display:none">"ignore_part_polarity"</span><span data-if="python" style="display:none">"ignore_part_polarity"</span></i> is capable of being
misunderstood.  It means that polarity changes between
neighboring model parts do not influence the score, and hence
are ignored.  Appropriate model
parts are automatically determined. The size of the parts can be
controlled by the generic parameter <i><span data-if="hdevelop" style="display:inline">'part_size'</span><span data-if="c" style="display:none">"part_size"</span><span data-if="cpp" style="display:none">"part_size"</span><span data-if="com" style="display:none">"part_size"</span><span data-if="dotnet" style="display:none">"part_size"</span><span data-if="python" style="display:none">"part_size"</span></i>, which is
described below.  Note that this metric only works for one-channel
images.  Consequently, if the model is created by using this
metric and searched in a multi-channel image by using
<a href="find_shape_model_3d.html"><code><span data-if="hdevelop" style="display:inline">find_shape_model_3d</span><span data-if="c" style="display:none">find_shape_model_3d</span><span data-if="cpp" style="display:none">FindShapeModel3d</span><span data-if="com" style="display:none">FindShapeModel3d</span><span data-if="dotnet" style="display:none">FindShapeModel3d</span><span data-if="python" style="display:none">find_shape_model_3d</span></code></a> an error will be returned.  If
<i><span data-if="hdevelop" style="display:inline">'metric'</span><span data-if="c" style="display:none">"metric"</span><span data-if="cpp" style="display:none">"metric"</span><span data-if="com" style="display:none">"metric"</span><span data-if="dotnet" style="display:none">"metric"</span><span data-if="python" style="display:none">"metric"</span></i> = <i><span data-if="hdevelop" style="display:inline">'ignore_local_polarity'</span><span data-if="c" style="display:none">"ignore_local_polarity"</span><span data-if="cpp" style="display:none">"ignore_local_polarity"</span><span data-if="com" style="display:none">"ignore_local_polarity"</span><span data-if="dotnet" style="display:none">"ignore_local_polarity"</span><span data-if="python" style="display:none">"ignore_local_polarity"</span></i>, the model
is found even if the contrast polarity changes for each individual
model point. This metric works for one-channel images as well as
for multi-channel images.  The metric
<i><span data-if="hdevelop" style="display:inline">'ignore_part_polarity'</span><span data-if="c" style="display:none">"ignore_part_polarity"</span><span data-if="cpp" style="display:none">"ignore_part_polarity"</span><span data-if="com" style="display:none">"ignore_part_polarity"</span><span data-if="dotnet" style="display:none">"ignore_part_polarity"</span><span data-if="python" style="display:none">"ignore_part_polarity"</span></i> should be used if the images
contain strongly textured backgrounds or clutter objects, which
might result in wrong matches. Note that in general the scores of
the matches that are returned by <a href="find_shape_model_3d.html"><code><span data-if="hdevelop" style="display:inline">find_shape_model_3d</span><span data-if="c" style="display:none">find_shape_model_3d</span><span data-if="cpp" style="display:none">FindShapeModel3d</span><span data-if="com" style="display:none">FindShapeModel3d</span><span data-if="dotnet" style="display:none">FindShapeModel3d</span><span data-if="python" style="display:none">find_shape_model_3d</span></code></a> are
lower for <i><span data-if="hdevelop" style="display:inline">'ignore_part_polarity'</span><span data-if="c" style="display:none">"ignore_part_polarity"</span><span data-if="cpp" style="display:none">"ignore_part_polarity"</span><span data-if="com" style="display:none">"ignore_part_polarity"</span><span data-if="dotnet" style="display:none">"ignore_part_polarity"</span><span data-if="python" style="display:none">"ignore_part_polarity"</span></i> than for
<i><span data-if="hdevelop" style="display:inline">'ignore_local_polarity'</span><span data-if="c" style="display:none">"ignore_local_polarity"</span><span data-if="cpp" style="display:none">"ignore_local_polarity"</span><span data-if="com" style="display:none">"ignore_local_polarity"</span><span data-if="dotnet" style="display:none">"ignore_local_polarity"</span><span data-if="python" style="display:none">"ignore_local_polarity"</span></i>. This should be kept in mind when
choosing the right value for the parameter <code><span data-if="hdevelop" style="display:inline">MinScore</span><span data-if="c" style="display:none">MinScore</span><span data-if="cpp" style="display:none">MinScore</span><span data-if="com" style="display:none">MinScore</span><span data-if="dotnet" style="display:none">minScore</span><span data-if="python" style="display:none">min_score</span></code> of
<a href="find_shape_model_3d.html"><code><span data-if="hdevelop" style="display:inline">find_shape_model_3d</span><span data-if="c" style="display:none">find_shape_model_3d</span><span data-if="cpp" style="display:none">FindShapeModel3d</span><span data-if="com" style="display:none">FindShapeModel3d</span><span data-if="dotnet" style="display:none">FindShapeModel3d</span><span data-if="python" style="display:none">find_shape_model_3d</span></code></a>.</p>
<p>
<i>List of values:</i> <i><span data-if="hdevelop" style="display:inline">'ignore_local_polarity'</span><span data-if="c" style="display:none">"ignore_local_polarity"</span><span data-if="cpp" style="display:none">"ignore_local_polarity"</span><span data-if="com" style="display:none">"ignore_local_polarity"</span><span data-if="dotnet" style="display:none">"ignore_local_polarity"</span><span data-if="python" style="display:none">"ignore_local_polarity"</span></i>,
<i><span data-if="hdevelop" style="display:inline">'ignore_part_polarity'</span><span data-if="c" style="display:none">"ignore_part_polarity"</span><span data-if="cpp" style="display:none">"ignore_part_polarity"</span><span data-if="com" style="display:none">"ignore_part_polarity"</span><span data-if="dotnet" style="display:none">"ignore_part_polarity"</span><span data-if="python" style="display:none">"ignore_part_polarity"</span></i></p>
<p>
<i>Default value:</i> <i><span data-if="hdevelop" style="display:inline">'ignore_local_polarity'</span><span data-if="c" style="display:none">"ignore_local_polarity"</span><span data-if="cpp" style="display:none">"ignore_local_polarity"</span><span data-if="com" style="display:none">"ignore_local_polarity"</span><span data-if="dotnet" style="display:none">"ignore_local_polarity"</span><span data-if="python" style="display:none">"ignore_local_polarity"</span></i>
</p>
</dd>

<dt><b><i><span data-if="hdevelop" style="display:inline">'part_size'</span><span data-if="c" style="display:none">"part_size"</span><span data-if="cpp" style="display:none">"part_size"</span><span data-if="com" style="display:none">"part_size"</span><span data-if="dotnet" style="display:none">"part_size"</span><span data-if="python" style="display:none">"part_size"</span></i>:</b></dt>
<dd>
<p>
 This parameter determines the size of
the model parts that is used when <i><span data-if="hdevelop" style="display:inline">'metric'</span><span data-if="c" style="display:none">"metric"</span><span data-if="cpp" style="display:none">"metric"</span><span data-if="com" style="display:none">"metric"</span><span data-if="dotnet" style="display:none">"metric"</span><span data-if="python" style="display:none">"metric"</span></i> is set to
<i><span data-if="hdevelop" style="display:inline">'ignore_part_polarity'</span><span data-if="c" style="display:none">"ignore_part_polarity"</span><span data-if="cpp" style="display:none">"ignore_part_polarity"</span><span data-if="com" style="display:none">"ignore_part_polarity"</span><span data-if="dotnet" style="display:none">"ignore_part_polarity"</span><span data-if="python" style="display:none">"ignore_part_polarity"</span></i> (see above).  The size must be
specified in pixels and should be approximately twice as large as
the size of the background texture in the image.  For example, if
an object should be found in front of a chessboard with black and
white squares of size 5×5 pixels, <i><span data-if="hdevelop" style="display:inline">'part_size'</span><span data-if="c" style="display:none">"part_size"</span><span data-if="cpp" style="display:none">"part_size"</span><span data-if="com" style="display:none">"part_size"</span><span data-if="dotnet" style="display:none">"part_size"</span><span data-if="python" style="display:none">"part_size"</span></i>
should be set to <i>10</i>.  Note that higher values of
<i><span data-if="hdevelop" style="display:inline">'part_size'</span><span data-if="c" style="display:none">"part_size"</span><span data-if="cpp" style="display:none">"part_size"</span><span data-if="com" style="display:none">"part_size"</span><span data-if="dotnet" style="display:none">"part_size"</span><span data-if="python" style="display:none">"part_size"</span></i> might also decrease the scores of correct
instances especially when searching for objects with shiny or
reflective surfaces.  Therefore, the risk of missing correct
instances might increase if <i><span data-if="hdevelop" style="display:inline">'part_size'</span><span data-if="c" style="display:none">"part_size"</span><span data-if="cpp" style="display:none">"part_size"</span><span data-if="com" style="display:none">"part_size"</span><span data-if="dotnet" style="display:none">"part_size"</span><span data-if="python" style="display:none">"part_size"</span></i> is set to
a higher value. If <i><span data-if="hdevelop" style="display:inline">'metric'</span><span data-if="c" style="display:none">"metric"</span><span data-if="cpp" style="display:none">"metric"</span><span data-if="com" style="display:none">"metric"</span><span data-if="dotnet" style="display:none">"metric"</span><span data-if="python" style="display:none">"metric"</span></i> is set to
<i><span data-if="hdevelop" style="display:inline">'ignore_local_polarity'</span><span data-if="c" style="display:none">"ignore_local_polarity"</span><span data-if="cpp" style="display:none">"ignore_local_polarity"</span><span data-if="com" style="display:none">"ignore_local_polarity"</span><span data-if="dotnet" style="display:none">"ignore_local_polarity"</span><span data-if="python" style="display:none">"ignore_local_polarity"</span></i>, the value of
<i><span data-if="hdevelop" style="display:inline">'part_size'</span><span data-if="c" style="display:none">"part_size"</span><span data-if="cpp" style="display:none">"part_size"</span><span data-if="com" style="display:none">"part_size"</span><span data-if="dotnet" style="display:none">"part_size"</span><span data-if="python" style="display:none">"part_size"</span></i> is ignored. </p>
<p>
<i>Suggested values:</i> <i>2</i>, <i>3</i>, <i>4</i>,
<i>6</i>, <i>8</i>, <i>10</i> </p>
<p>
<i>Default value:</i> <i>4</i>
</p>
</dd>

<dt><b><i><span data-if="hdevelop" style="display:inline">'min_face_angle'</span><span data-if="c" style="display:none">"min_face_angle"</span><span data-if="cpp" style="display:none">"min_face_angle"</span><span data-if="com" style="display:none">"min_face_angle"</span><span data-if="dotnet" style="display:none">"min_face_angle"</span><span data-if="python" style="display:none">"min_face_angle"</span></i>:</b></dt>
<dd>
<p>
 3D edges are only
included in the shape representations of the views if the angle
between the two 3D faces that are incident with the 3D object
model edge is at least <i><span data-if="hdevelop" style="display:inline">'min_face_angle'</span><span data-if="c" style="display:none">"min_face_angle"</span><span data-if="cpp" style="display:none">"min_face_angle"</span><span data-if="com" style="display:none">"min_face_angle"</span><span data-if="dotnet" style="display:none">"min_face_angle"</span><span data-if="python" style="display:none">"min_face_angle"</span></i>. If
<i><span data-if="hdevelop" style="display:inline">'min_face_angle'</span><span data-if="c" style="display:none">"min_face_angle"</span><span data-if="cpp" style="display:none">"min_face_angle"</span><span data-if="com" style="display:none">"min_face_angle"</span><span data-if="dotnet" style="display:none">"min_face_angle"</span><span data-if="python" style="display:none">"min_face_angle"</span></i> is set to <i>0.0</i>, all edges are
included. If <i><span data-if="hdevelop" style="display:inline">'min_face_angle'</span><span data-if="c" style="display:none">"min_face_angle"</span><span data-if="cpp" style="display:none">"min_face_angle"</span><span data-if="com" style="display:none">"min_face_angle"</span><span data-if="dotnet" style="display:none">"min_face_angle"</span><span data-if="python" style="display:none">"min_face_angle"</span></i> is set to <span title="6" style="vertical-align:-0.0991602em" class="math"><!-- Created by MetaPost 1.902 on 2023.05.15:2033 --><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="0.729643em" height="0.573321em" viewBox="0 0 11.674286 9.173141">
<!-- Original BoundingBox: -5.837143 -4.586578 5.837143 4.586563 -->
  <defs>
    <g transform="scale(0.009963,0.009963)" id="GLYPHcmmi10_25">
      <path style="fill-rule: evenodd;" d="M265.000000 -373.000000L378.000000 -373.000000C345.000000 -225.000000,336.000000 -182.000000,336.000000 -115.000000C336.000000 -100.000000,336.000000 -73.000000,344.000000 -39.000000C354.000000 5.000000,365.000000 11.000000,380.000000 11.000000C400.000000 11.000000,421.000000 -7.000000,421.000000 -27.000000C421.000000 -33.000000,421.000000 -35.000000,415.000000 -49.000000C386.000000 -121.000000,386.000000 -186.000000,386.000000 -214.000000C386.000000 -267.000000,393.000000 -321.000000,404.000000 -373.000000L518.000000 -373.000000C531.000000 -373.000000,567.000000 -373.000000,567.000000 -407.000000C567.000000 -431.000000,546.000000 -431.000000,527.000000 -431.000000L192.000000 -431.000000C170.000000 -431.000000,132.000000 -431.000000,88.000000 -384.000000C53.000000 -345.000000,27.000000 -299.000000,27.000000 -294.000000C27.000000 -293.000000,27.000000 -284.000000,39.000000 -284.000000C47.000000 -284.000000,49.000000 -288.000000,55.000000 -296.000000C104.000000 -373.000000,162.000000 -373.000000,182.000000 -373.000000L239.000000 -373.000000C207.000000 -252.000000,153.000000 -131.000000,111.000000 -40.000000C103.000000 -25.000000,103.000000 -23.000000,103.000000 -16.000000C103.000000 3.000000,119.000000 11.000000,132.000000 11.000000C162.000000 11.000000,170.000000 -17.000000,182.000000 -54.000000C196.000000 -100.000000,196.000000 -102.000000,209.000000 -152.000000"></path>
    </g>
  </defs>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,0.178848 7.586578)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi10_25"></use>
  </g>
</svg></span>
(equivalent to 180 degrees), only the silhouette of the 3D object
model is included. This parameter can be used to suppress edges
within curved surfaces, e.g., the surface of a cylinder or
cone. Curved surfaces are approximated by multiple planar
faces. The edges between such neighboring planar faces should not
be included in the shape representation because they also do not
appear in real images of the model. Thus,
<i><span data-if="hdevelop" style="display:inline">'min_face_angle'</span><span data-if="c" style="display:none">"min_face_angle"</span><span data-if="cpp" style="display:none">"min_face_angle"</span><span data-if="com" style="display:none">"min_face_angle"</span><span data-if="dotnet" style="display:none">"min_face_angle"</span><span data-if="python" style="display:none">"min_face_angle"</span></i> should be set sufficiently high to
suppress these edges.  The effect of different values for
<i><span data-if="hdevelop" style="display:inline">'min_face_angle'</span><span data-if="c" style="display:none">"min_face_angle"</span><span data-if="cpp" style="display:none">"min_face_angle"</span><span data-if="com" style="display:none">"min_face_angle"</span><span data-if="dotnet" style="display:none">"min_face_angle"</span><span data-if="python" style="display:none">"min_face_angle"</span></i> can be inspected by using
<a href="project_object_model_3d.html"><code><span data-if="hdevelop" style="display:inline">project_object_model_3d</span><span data-if="c" style="display:none">project_object_model_3d</span><span data-if="cpp" style="display:none">ProjectObjectModel3d</span><span data-if="com" style="display:none">ProjectObjectModel3d</span><span data-if="dotnet" style="display:none">ProjectObjectModel3d</span><span data-if="python" style="display:none">project_object_model_3d</span></code></a> before calling
<code><span data-if="hdevelop" style="display:inline">create_shape_model_3d</span><span data-if="c" style="display:none">create_shape_model_3d</span><span data-if="cpp" style="display:none">CreateShapeModel3d</span><span data-if="com" style="display:none">CreateShapeModel3d</span><span data-if="dotnet" style="display:none">CreateShapeModel3d</span><span data-if="python" style="display:none">create_shape_model_3d</span></code>.  Note that if edges that are not
visible in the search image are included in the shape
representation, the performance (robustness and speed) of the
matching may decrease considerably.</p>
<p>
<i>Suggested values:</i>
<i><span data-if="hdevelop" style="display:inline">'rad(10)'</span><span data-if="c" style="display:none">"rad(10)"</span><span data-if="cpp" style="display:none">"rad(10)"</span><span data-if="com" style="display:none">"rad(10)"</span><span data-if="dotnet" style="display:none">"rad(10)"</span><span data-if="python" style="display:none">"rad(10)"</span></i>, <i><span data-if="hdevelop" style="display:inline">'rad(20)'</span><span data-if="c" style="display:none">"rad(20)"</span><span data-if="cpp" style="display:none">"rad(20)"</span><span data-if="com" style="display:none">"rad(20)"</span><span data-if="dotnet" style="display:none">"rad(20)"</span><span data-if="python" style="display:none">"rad(20)"</span></i>, <i><span data-if="hdevelop" style="display:inline">'rad(30)'</span><span data-if="c" style="display:none">"rad(30)"</span><span data-if="cpp" style="display:none">"rad(30)"</span><span data-if="com" style="display:none">"rad(30)"</span><span data-if="dotnet" style="display:none">"rad(30)"</span><span data-if="python" style="display:none">"rad(30)"</span></i>,
<i><span data-if="hdevelop" style="display:inline">'rad(45)'</span><span data-if="c" style="display:none">"rad(45)"</span><span data-if="cpp" style="display:none">"rad(45)"</span><span data-if="com" style="display:none">"rad(45)"</span><span data-if="dotnet" style="display:none">"rad(45)"</span><span data-if="python" style="display:none">"rad(45)"</span></i> </p>
<p>
<i>Default value:</i> <i><span data-if="hdevelop" style="display:inline">'rad(30)'</span><span data-if="c" style="display:none">"rad(30)"</span><span data-if="cpp" style="display:none">"rad(30)"</span><span data-if="com" style="display:none">"rad(30)"</span><span data-if="dotnet" style="display:none">"rad(30)"</span><span data-if="python" style="display:none">"rad(30)"</span></i>
</p>
</dd>

<dt><b><i><span data-if="hdevelop" style="display:inline">'min_size'</span><span data-if="c" style="display:none">"min_size"</span><span data-if="cpp" style="display:none">"min_size"</span><span data-if="com" style="display:none">"min_size"</span><span data-if="dotnet" style="display:none">"min_size"</span><span data-if="python" style="display:none">"min_size"</span></i>:</b></dt>
<dd>
<p>
 This value determines a
threshold for the selection of significant model components based
on the size of the components, i.e., connected components that
have fewer points than the specified minimum size are suppressed.
This threshold for the minimum size is divided by two for each
successive pyramid level.</p>
<p>
<i>Suggested values:</i>
<i><span data-if="hdevelop" style="display:inline">'auto'</span><span data-if="c" style="display:none">"auto"</span><span data-if="cpp" style="display:none">"auto"</span><span data-if="com" style="display:none">"auto"</span><span data-if="dotnet" style="display:none">"auto"</span><span data-if="python" style="display:none">"auto"</span></i>, <i>0</i>, <i>3</i>, <i>5</i>, <i>10</i>,
<i>20</i> </p>
<p>
<i>Default value:</i> <i><span data-if="hdevelop" style="display:inline">'auto'</span><span data-if="c" style="display:none">"auto"</span><span data-if="cpp" style="display:none">"auto"</span><span data-if="com" style="display:none">"auto"</span><span data-if="dotnet" style="display:none">"auto"</span><span data-if="python" style="display:none">"auto"</span></i>
</p>
</dd>

<dt><b><i><span data-if="hdevelop" style="display:inline">'model_tolerance'</span><span data-if="c" style="display:none">"model_tolerance"</span><span data-if="cpp" style="display:none">"model_tolerance"</span><span data-if="com" style="display:none">"model_tolerance"</span><span data-if="dotnet" style="display:none">"model_tolerance"</span><span data-if="python" style="display:none">"model_tolerance"</span></i>:</b></dt>
<dd>
<p>
 The parameter
specifies the tolerance of the projected 3D object model edges in
the image, given in pixels. The higher the value is chosen, the
fewer views need to be generated. Consequently, a higher value
results in models that are less memory consuming and faster to
find with <a href="find_shape_model_3d.html"><code><span data-if="hdevelop" style="display:inline">find_shape_model_3d</span><span data-if="c" style="display:none">find_shape_model_3d</span><span data-if="cpp" style="display:none">FindShapeModel3d</span><span data-if="com" style="display:none">FindShapeModel3d</span><span data-if="dotnet" style="display:none">FindShapeModel3d</span><span data-if="python" style="display:none">find_shape_model_3d</span></code></a>. On the other hand, if the
value is chosen too high, the robustness of the matching will
decrease.  Therefore, this parameter should only be modified with
care. For most applications, a good compromise between speed and
robustness is obtained when setting <i><span data-if="hdevelop" style="display:inline">'model_tolerance'</span><span data-if="c" style="display:none">"model_tolerance"</span><span data-if="cpp" style="display:none">"model_tolerance"</span><span data-if="com" style="display:none">"model_tolerance"</span><span data-if="dotnet" style="display:none">"model_tolerance"</span><span data-if="python" style="display:none">"model_tolerance"</span></i> to
<i>1</i>.</p>
<p>
<i>Suggested values:</i> <i>0</i>, <i>1</i>, <i>2</i> </p>
<p>
<i>Default value:</i> <i>1</i>
</p>
</dd>

<dt><b><i><span data-if="hdevelop" style="display:inline">'union_adjacent_contours'</span><span data-if="c" style="display:none">"union_adjacent_contours"</span><span data-if="cpp" style="display:none">"union_adjacent_contours"</span><span data-if="com" style="display:none">"union_adjacent_contours"</span><span data-if="dotnet" style="display:none">"union_adjacent_contours"</span><span data-if="python" style="display:none">"union_adjacent_contours"</span></i>:</b></dt>
<dd>
<p>
 This parameter specifies if
adjacent projected contours should be joined by 该算子
<a href="project_shape_model_3d.html"><code><span data-if="hdevelop" style="display:inline">project_shape_model_3d</span><span data-if="c" style="display:none">project_shape_model_3d</span><span data-if="cpp" style="display:none">ProjectShapeModel3d</span><span data-if="com" style="display:none">ProjectShapeModel3d</span><span data-if="dotnet" style="display:none">ProjectShapeModel3d</span><span data-if="python" style="display:none">project_shape_model_3d</span></code></a> or not.
Activating this option is equivalent to calling
<a href="union_adjacent_contours_xld.html"><code><span data-if="hdevelop" style="display:inline">union_adjacent_contours_xld</span><span data-if="c" style="display:none">union_adjacent_contours_xld</span><span data-if="cpp" style="display:none">UnionAdjacentContoursXld</span><span data-if="com" style="display:none">UnionAdjacentContoursXld</span><span data-if="dotnet" style="display:none">UnionAdjacentContoursXld</span><span data-if="python" style="display:none">union_adjacent_contours_xld</span></code></a> afterwards, but significantly
faster. </p>
<p>
<i>List of values:</i> <i><span data-if="hdevelop" style="display:inline">'true'</span><span data-if="c" style="display:none">"true"</span><span data-if="cpp" style="display:none">"true"</span><span data-if="com" style="display:none">"true"</span><span data-if="dotnet" style="display:none">"true"</span><span data-if="python" style="display:none">"true"</span></i>, <i><span data-if="hdevelop" style="display:inline">'false'</span><span data-if="c" style="display:none">"false"</span><span data-if="cpp" style="display:none">"false"</span><span data-if="com" style="display:none">"false"</span><span data-if="dotnet" style="display:none">"false"</span><span data-if="python" style="display:none">"false"</span></i> </p>
<p>
<i>Default value:</i> <i><span data-if="hdevelop" style="display:inline">'false'</span><span data-if="c" style="display:none">"false"</span><span data-if="cpp" style="display:none">"false"</span><span data-if="com" style="display:none">"false"</span><span data-if="dotnet" style="display:none">"false"</span><span data-if="python" style="display:none">"false"</span></i>
</p>
</dd>
</dl>
<p>If the system variable (see <a href="set_system.html"><code><span data-if="hdevelop" style="display:inline">set_system</span><span data-if="c" style="display:none">set_system</span><span data-if="cpp" style="display:none">SetSystem</span><span data-if="com" style="display:none">SetSystem</span><span data-if="dotnet" style="display:none">SetSystem</span><span data-if="python" style="display:none">set_system</span></code></a>)
<i><span data-if="hdevelop" style="display:inline">'opengl_hidden_surface_removal_enable'</span><span data-if="c" style="display:none">"opengl_hidden_surface_removal_enable"</span><span data-if="cpp" style="display:none">"opengl_hidden_surface_removal_enable"</span><span data-if="com" style="display:none">"opengl_hidden_surface_removal_enable"</span><span data-if="dotnet" style="display:none">"opengl_hidden_surface_removal_enable"</span><span data-if="python" style="display:none">"opengl_hidden_surface_removal_enable"</span></i> is set to <i><span data-if="hdevelop" style="display:inline">'true'</span><span data-if="c" style="display:none">"true"</span><span data-if="cpp" style="display:none">"true"</span><span data-if="com" style="display:none">"true"</span><span data-if="dotnet" style="display:none">"true"</span><span data-if="python" style="display:none">"true"</span></i>
(which is default if it is available) the graphics card is used to accelerate
the computation of the visible faces in the model views. Depending on the
graphics card this is significantly faster than the analytic visibility
computation.
If <i><span data-if="hdevelop" style="display:inline">'fast_pose_refinement'</span><span data-if="c" style="display:none">"fast_pose_refinement"</span><span data-if="cpp" style="display:none">"fast_pose_refinement"</span><span data-if="com" style="display:none">"fast_pose_refinement"</span><span data-if="dotnet" style="display:none">"fast_pose_refinement"</span><span data-if="python" style="display:none">"fast_pose_refinement"</span></i> is set to <i><span data-if="hdevelop" style="display:inline">'true'</span><span data-if="c" style="display:none">"true"</span><span data-if="cpp" style="display:none">"true"</span><span data-if="com" style="display:none">"true"</span><span data-if="dotnet" style="display:none">"true"</span><span data-if="python" style="display:none">"true"</span></i>, the
precomputations necessary for the pose refinement step in
<a href="find_shape_model_3d.html"><code><span data-if="hdevelop" style="display:inline">find_shape_model_3d</span><span data-if="c" style="display:none">find_shape_model_3d</span><span data-if="cpp" style="display:none">FindShapeModel3d</span><span data-if="com" style="display:none">FindShapeModel3d</span><span data-if="dotnet" style="display:none">FindShapeModel3d</span><span data-if="python" style="display:none">find_shape_model_3d</span></code></a> are also performed on the graphics card.
Be aware that the results of the OpenGL projection are slightly different
compared to the analytic projection.
</p>
<h2 id="sec_execution">运行信息</h2>
<ul>
  <li>多线程类型:可重入(与非独占操作符并行运行)。</li>
<li>多线程作用域:全局(可以从任何线程调用)。</li>
  
    <li>Automatically parallelized on internal data level.</li>
  
</ul>
<p>This operator returns a handle. Note that the state of an instance of this handle type may be changed by specific operators even though the handle is used as an input parameter by those operators.</p>
<h2 id="sec_parameters">参数表</h2>
  <div class="par">
<div class="parhead">
<span id="ObjectModel3D" class="parname"><b><code><span data-if="hdevelop" style="display:inline">ObjectModel3D</span><span data-if="c" style="display:none">ObjectModel3D</span><span data-if="cpp" style="display:none">ObjectModel3D</span><span data-if="com" style="display:none">ObjectModel3D</span><span data-if="dotnet" style="display:none">objectModel3D</span><span data-if="python" style="display:none">object_model_3d</span></code></b> (input_control)  </span><span>object_model_3d <code>→</code> <span data-if="dotnet" style="display:none"><a href="HObjectModel3D.html">HObjectModel3D</a>, </span><span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">HHandle</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (handle)</span><span data-if="dotnet" style="display:none"> (<i>IntPtr</i>)</span><span data-if="cpp" style="display:none"> (<i>HHandle</i>)</span><span data-if="c" style="display:none"> (<i>handle</i>)</span></span>
</div>
<p class="pardesc">Handle of the 3D object model.</p>
</div>
  <div class="par">
<div class="parhead">
<span id="CamParam" class="parname"><b><code><span data-if="hdevelop" style="display:inline">CamParam</span><span data-if="c" style="display:none">CamParam</span><span data-if="cpp" style="display:none">CamParam</span><span data-if="com" style="display:none">CamParam</span><span data-if="dotnet" style="display:none">camParam</span><span data-if="python" style="display:none">cam_param</span></code></b> (input_control)  </span><span>campar <code>→</code> <span data-if="dotnet" style="display:none"><a href="HCamPar.html">HCamPar</a>, </span><span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">Sequence[Union[int, float, str]]</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (real / </span><span data-if="hdevelop" style="display:inline">integer / </span><span data-if="hdevelop" style="display:inline">string)</span><span data-if="dotnet" style="display:none"> (<i>double</i> / </span><span data-if="dotnet" style="display:none">int / </span><span data-if="dotnet" style="display:none">long / </span><span data-if="dotnet" style="display:none">string)</span><span data-if="cpp" style="display:none"> (<i>double</i> / </span><span data-if="cpp" style="display:none">Hlong / </span><span data-if="cpp" style="display:none">HString)</span><span data-if="c" style="display:none"> (<i>double</i> / </span><span data-if="c" style="display:none">Hlong / </span><span data-if="c" style="display:none">char*)</span></span>
</div>
<p class="pardesc">Internal camera parameters.</p>
</div>
  <div class="par">
<div class="parhead">
<span id="RefRotX" class="parname"><b><code><span data-if="hdevelop" style="display:inline">RefRotX</span><span data-if="c" style="display:none">RefRotX</span><span data-if="cpp" style="display:none">RefRotX</span><span data-if="com" style="display:none">RefRotX</span><span data-if="dotnet" style="display:none">refRotX</span><span data-if="python" style="display:none">ref_rot_x</span></code></b> (input_control)  </span><span>angle.rad <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">float</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (real)</span><span data-if="dotnet" style="display:none"> (<i>double</i>)</span><span data-if="cpp" style="display:none"> (<i>double</i>)</span><span data-if="c" style="display:none"> (<i>double</i>)</span></span>
</div>
<p class="pardesc">Reference orientation: Rotation around x-axis or x
component of the Rodriguez vector (in radians or
without unit).</p>
<p class="pardesc"><span class="parcat">Default:
      </span>0</p>
<p class="pardesc"><span class="parcat">Suggested values:
      </span>-1.57, -0.78, -0.17, 0., 0.17, 0.78, 1.57</p>
</div>
  <div class="par">
<div class="parhead">
<span id="RefRotY" class="parname"><b><code><span data-if="hdevelop" style="display:inline">RefRotY</span><span data-if="c" style="display:none">RefRotY</span><span data-if="cpp" style="display:none">RefRotY</span><span data-if="com" style="display:none">RefRotY</span><span data-if="dotnet" style="display:none">refRotY</span><span data-if="python" style="display:none">ref_rot_y</span></code></b> (input_control)  </span><span>angle.rad <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">float</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (real)</span><span data-if="dotnet" style="display:none"> (<i>double</i>)</span><span data-if="cpp" style="display:none"> (<i>double</i>)</span><span data-if="c" style="display:none"> (<i>double</i>)</span></span>
</div>
<p class="pardesc">Reference orientation: Rotation around y-axis or y
component of the Rodriguez vector (in radians or
without unit).</p>
<p class="pardesc"><span class="parcat">Default:
      </span>0</p>
<p class="pardesc"><span class="parcat">Suggested values:
      </span>-1.57, -0.78, -0.17, 0., 0.17, 0.78, 1.57</p>
</div>
  <div class="par">
<div class="parhead">
<span id="RefRotZ" class="parname"><b><code><span data-if="hdevelop" style="display:inline">RefRotZ</span><span data-if="c" style="display:none">RefRotZ</span><span data-if="cpp" style="display:none">RefRotZ</span><span data-if="com" style="display:none">RefRotZ</span><span data-if="dotnet" style="display:none">refRotZ</span><span data-if="python" style="display:none">ref_rot_z</span></code></b> (input_control)  </span><span>angle.rad <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">float</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (real)</span><span data-if="dotnet" style="display:none"> (<i>double</i>)</span><span data-if="cpp" style="display:none"> (<i>double</i>)</span><span data-if="c" style="display:none"> (<i>double</i>)</span></span>
</div>
<p class="pardesc">Reference orientation: Rotation around z-axis or z
component of the Rodriguez vector (in radians or
without unit).</p>
<p class="pardesc"><span class="parcat">Default:
      </span>0</p>
<p class="pardesc"><span class="parcat">Suggested values:
      </span>-1.57, -0.78, -0.17, 0., 0.17, 0.78, 1.57</p>
</div>
  <div class="par">
<div class="parhead">
<span id="OrderOfRotation" class="parname"><b><code><span data-if="hdevelop" style="display:inline">OrderOfRotation</span><span data-if="c" style="display:none">OrderOfRotation</span><span data-if="cpp" style="display:none">OrderOfRotation</span><span data-if="com" style="display:none">OrderOfRotation</span><span data-if="dotnet" style="display:none">orderOfRotation</span><span data-if="python" style="display:none">order_of_rotation</span></code></b> (input_control)  </span><span>string <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">str</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (string)</span><span data-if="dotnet" style="display:none"> (<i>string</i>)</span><span data-if="cpp" style="display:none"> (<i>HString</i>)</span><span data-if="c" style="display:none"> (<i>char*</i>)</span></span>
</div>
<p class="pardesc">Meaning of the rotation values of the reference
orientation.</p>
<p class="pardesc"><span class="parcat">Default:
      </span>
    <span data-if="hdevelop" style="display:inline">'gba'</span>
    <span data-if="c" style="display:none">"gba"</span>
    <span data-if="cpp" style="display:none">"gba"</span>
    <span data-if="com" style="display:none">"gba"</span>
    <span data-if="dotnet" style="display:none">"gba"</span>
    <span data-if="python" style="display:none">"gba"</span>
</p>
<p class="pardesc"><span class="parcat">List of values:
      </span><span data-if="hdevelop" style="display:inline">'abg'</span><span data-if="c" style="display:none">"abg"</span><span data-if="cpp" style="display:none">"abg"</span><span data-if="com" style="display:none">"abg"</span><span data-if="dotnet" style="display:none">"abg"</span><span data-if="python" style="display:none">"abg"</span>, <span data-if="hdevelop" style="display:inline">'gba'</span><span data-if="c" style="display:none">"gba"</span><span data-if="cpp" style="display:none">"gba"</span><span data-if="com" style="display:none">"gba"</span><span data-if="dotnet" style="display:none">"gba"</span><span data-if="python" style="display:none">"gba"</span>, <span data-if="hdevelop" style="display:inline">'rodriguez'</span><span data-if="c" style="display:none">"rodriguez"</span><span data-if="cpp" style="display:none">"rodriguez"</span><span data-if="com" style="display:none">"rodriguez"</span><span data-if="dotnet" style="display:none">"rodriguez"</span><span data-if="python" style="display:none">"rodriguez"</span></p>
</div>
  <div class="par">
<div class="parhead">
<span id="LongitudeMin" class="parname"><b><code><span data-if="hdevelop" style="display:inline">LongitudeMin</span><span data-if="c" style="display:none">LongitudeMin</span><span data-if="cpp" style="display:none">LongitudeMin</span><span data-if="com" style="display:none">LongitudeMin</span><span data-if="dotnet" style="display:none">longitudeMin</span><span data-if="python" style="display:none">longitude_min</span></code></b> (input_control)  </span><span>angle.rad <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">float</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (real)</span><span data-if="dotnet" style="display:none"> (<i>double</i>)</span><span data-if="cpp" style="display:none"> (<i>double</i>)</span><span data-if="c" style="display:none"> (<i>double</i>)</span></span>
</div>
<p class="pardesc">Minimum longitude of the model views.</p>
<p class="pardesc"><span class="parcat">Default:
      </span>-0.35</p>
<p class="pardesc"><span class="parcat">Suggested values:
      </span>-0.78, -0.35, -0.17</p>
</div>
  <div class="par">
<div class="parhead">
<span id="LongitudeMax" class="parname"><b><code><span data-if="hdevelop" style="display:inline">LongitudeMax</span><span data-if="c" style="display:none">LongitudeMax</span><span data-if="cpp" style="display:none">LongitudeMax</span><span data-if="com" style="display:none">LongitudeMax</span><span data-if="dotnet" style="display:none">longitudeMax</span><span data-if="python" style="display:none">longitude_max</span></code></b> (input_control)  </span><span>angle.rad <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">float</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (real)</span><span data-if="dotnet" style="display:none"> (<i>double</i>)</span><span data-if="cpp" style="display:none"> (<i>double</i>)</span><span data-if="c" style="display:none"> (<i>double</i>)</span></span>
</div>
<p class="pardesc">Maximum longitude of the model views.</p>
<p class="pardesc"><span class="parcat">Default:
      </span>0.35</p>
<p class="pardesc"><span class="parcat">Suggested values:
      </span>0.17, 0.35, 0.78</p>
<p class="pardesc"><span class="parcat">Restriction:
      </span><code>LongitudeMax &gt;= LongitudeMin</code></p>
</div>
  <div class="par">
<div class="parhead">
<span id="LatitudeMin" class="parname"><b><code><span data-if="hdevelop" style="display:inline">LatitudeMin</span><span data-if="c" style="display:none">LatitudeMin</span><span data-if="cpp" style="display:none">LatitudeMin</span><span data-if="com" style="display:none">LatitudeMin</span><span data-if="dotnet" style="display:none">latitudeMin</span><span data-if="python" style="display:none">latitude_min</span></code></b> (input_control)  </span><span>angle.rad <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">float</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (real)</span><span data-if="dotnet" style="display:none"> (<i>double</i>)</span><span data-if="cpp" style="display:none"> (<i>double</i>)</span><span data-if="c" style="display:none"> (<i>double</i>)</span></span>
</div>
<p class="pardesc">Minimum latitude of the model views.</p>
<p class="pardesc"><span class="parcat">Default:
      </span>-0.35</p>
<p class="pardesc"><span class="parcat">Suggested values:
      </span>-0.78, -0.35, -0.17</p>
<p class="pardesc"><span class="parcat">Restriction:
      </span><code>- pi / 2 &lt;= LatitudeMin &amp;&amp; LatitudeMin &lt;= pi / 2</code></p>
</div>
  <div class="par">
<div class="parhead">
<span id="LatitudeMax" class="parname"><b><code><span data-if="hdevelop" style="display:inline">LatitudeMax</span><span data-if="c" style="display:none">LatitudeMax</span><span data-if="cpp" style="display:none">LatitudeMax</span><span data-if="com" style="display:none">LatitudeMax</span><span data-if="dotnet" style="display:none">latitudeMax</span><span data-if="python" style="display:none">latitude_max</span></code></b> (input_control)  </span><span>angle.rad <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">float</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (real)</span><span data-if="dotnet" style="display:none"> (<i>double</i>)</span><span data-if="cpp" style="display:none"> (<i>double</i>)</span><span data-if="c" style="display:none"> (<i>double</i>)</span></span>
</div>
<p class="pardesc">Maximum latitude of the model views.</p>
<p class="pardesc"><span class="parcat">Default:
      </span>0.35</p>
<p class="pardesc"><span class="parcat">Suggested values:
      </span>0.17, 0.35, 0.78</p>
<p class="pardesc"><span class="parcat">Restriction:
      </span><code>- pi / 2 &lt;= LatitudeMax &amp;&amp; LatitudeMax &lt;= pi / 2 &amp;&amp; LatitudeMax &gt;= LatitudeMin</code></p>
</div>
  <div class="par">
<div class="parhead">
<span id="CamRollMin" class="parname"><b><code><span data-if="hdevelop" style="display:inline">CamRollMin</span><span data-if="c" style="display:none">CamRollMin</span><span data-if="cpp" style="display:none">CamRollMin</span><span data-if="com" style="display:none">CamRollMin</span><span data-if="dotnet" style="display:none">camRollMin</span><span data-if="python" style="display:none">cam_roll_min</span></code></b> (input_control)  </span><span>angle.rad <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">float</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (real)</span><span data-if="dotnet" style="display:none"> (<i>double</i>)</span><span data-if="cpp" style="display:none"> (<i>double</i>)</span><span data-if="c" style="display:none"> (<i>double</i>)</span></span>
</div>
<p class="pardesc">Minimum camera roll angle of the model views.</p>
<p class="pardesc"><span class="parcat">Default:
      </span>-3.1416</p>
<p class="pardesc"><span class="parcat">Suggested values:
      </span>-3.14, -1.57, -0.39, 0.0, 0.39, 1.57, 3.14</p>
</div>
  <div class="par">
<div class="parhead">
<span id="CamRollMax" class="parname"><b><code><span data-if="hdevelop" style="display:inline">CamRollMax</span><span data-if="c" style="display:none">CamRollMax</span><span data-if="cpp" style="display:none">CamRollMax</span><span data-if="com" style="display:none">CamRollMax</span><span data-if="dotnet" style="display:none">camRollMax</span><span data-if="python" style="display:none">cam_roll_max</span></code></b> (input_control)  </span><span>angle.rad <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">float</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (real)</span><span data-if="dotnet" style="display:none"> (<i>double</i>)</span><span data-if="cpp" style="display:none"> (<i>double</i>)</span><span data-if="c" style="display:none"> (<i>double</i>)</span></span>
</div>
<p class="pardesc">Maximum camera roll angle of the model views.</p>
<p class="pardesc"><span class="parcat">Default:
      </span>3.1416</p>
<p class="pardesc"><span class="parcat">Suggested values:
      </span>-3.14, -1.57, -0.39, 0.0, 0.39, 1.57, 3.14</p>
<p class="pardesc"><span class="parcat">Restriction:
      </span><code>CamRollMax &gt;= CamRollMin</code></p>
</div>
  <div class="par">
<div class="parhead">
<span id="DistMin" class="parname"><b><code><span data-if="hdevelop" style="display:inline">DistMin</span><span data-if="c" style="display:none">DistMin</span><span data-if="cpp" style="display:none">DistMin</span><span data-if="com" style="display:none">DistMin</span><span data-if="dotnet" style="display:none">distMin</span><span data-if="python" style="display:none">dist_min</span></code></b> (input_control)  </span><span>number <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">float</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (real)</span><span data-if="dotnet" style="display:none"> (<i>double</i>)</span><span data-if="cpp" style="display:none"> (<i>double</i>)</span><span data-if="c" style="display:none"> (<i>double</i>)</span></span>
</div>
<p class="pardesc">Minimum camera-object-distance of the model views.</p>
<p class="pardesc"><span class="parcat">Default:
      </span>0.3</p>
<p class="pardesc"><span class="parcat">Suggested values:
      </span>0.05, 0.1, 0.2, 0.5</p>
<p class="pardesc"><span class="parcat">Restriction:
      </span><code>DistMin &gt; 0</code></p>
</div>
  <div class="par">
<div class="parhead">
<span id="DistMax" class="parname"><b><code><span data-if="hdevelop" style="display:inline">DistMax</span><span data-if="c" style="display:none">DistMax</span><span data-if="cpp" style="display:none">DistMax</span><span data-if="com" style="display:none">DistMax</span><span data-if="dotnet" style="display:none">distMax</span><span data-if="python" style="display:none">dist_max</span></code></b> (input_control)  </span><span>number <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">float</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (real)</span><span data-if="dotnet" style="display:none"> (<i>double</i>)</span><span data-if="cpp" style="display:none"> (<i>double</i>)</span><span data-if="c" style="display:none"> (<i>double</i>)</span></span>
</div>
<p class="pardesc">Maximum camera-object-distance of the model views.</p>
<p class="pardesc"><span class="parcat">Default:
      </span>0.4</p>
<p class="pardesc"><span class="parcat">Suggested values:
      </span>0.1, 0.2, 0.5, 1.0</p>
<p class="pardesc"><span class="parcat">Restriction:
      </span><code>DistMax &gt;= DistMin</code></p>
</div>
  <div class="par">
<div class="parhead">
<span id="MinContrast" class="parname"><b><code><span data-if="hdevelop" style="display:inline">MinContrast</span><span data-if="c" style="display:none">MinContrast</span><span data-if="cpp" style="display:none">MinContrast</span><span data-if="com" style="display:none">MinContrast</span><span data-if="dotnet" style="display:none">minContrast</span><span data-if="python" style="display:none">min_contrast</span></code></b> (input_control)  </span><span>number <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">int</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (integer)</span><span data-if="dotnet" style="display:none"> (<i>int</i> / </span><span data-if="dotnet" style="display:none">long)</span><span data-if="cpp" style="display:none"> (<i>Hlong</i>)</span><span data-if="c" style="display:none"> (<i>Hlong</i>)</span></span>
</div>
<p class="pardesc">Minimum contrast of the objects in the search images.</p>
<p class="pardesc"><span class="parcat">Default:
      </span>10</p>
<p class="pardesc"><span class="parcat">Suggested values:
      </span>1, 2, 3, 5, 7, 10, 20, 30, 1000, 2000, 5000</p>
</div>
  <div class="par">
<div class="parhead">
<span id="GenParamName" class="parname"><b><code><span data-if="hdevelop" style="display:inline">GenParamName</span><span data-if="c" style="display:none">GenParamName</span><span data-if="cpp" style="display:none">GenParamName</span><span data-if="com" style="display:none">GenParamName</span><span data-if="dotnet" style="display:none">genParamName</span><span data-if="python" style="display:none">gen_param_name</span></code></b> (input_control)  </span><span>attribute.name(-array) <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">MaybeSequence[str]</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (string)</span><span data-if="dotnet" style="display:none"> (<i>string</i>)</span><span data-if="cpp" style="display:none"> (<i>HString</i>)</span><span data-if="c" style="display:none"> (<i>char*</i>)</span></span>
</div>
<p class="pardesc">Names of (optional) parameters for
controlling the behavior of 该算子.</p>
<p class="pardesc"><span class="parcat">Default:
      </span>[]</p>
<p class="pardesc"><span class="parcat">List of values:
      </span><span data-if="hdevelop" style="display:inline">'fast_pose_refinement'</span><span data-if="c" style="display:none">"fast_pose_refinement"</span><span data-if="cpp" style="display:none">"fast_pose_refinement"</span><span data-if="com" style="display:none">"fast_pose_refinement"</span><span data-if="dotnet" style="display:none">"fast_pose_refinement"</span><span data-if="python" style="display:none">"fast_pose_refinement"</span>, <span data-if="hdevelop" style="display:inline">'lowest_model_level'</span><span data-if="c" style="display:none">"lowest_model_level"</span><span data-if="cpp" style="display:none">"lowest_model_level"</span><span data-if="com" style="display:none">"lowest_model_level"</span><span data-if="dotnet" style="display:none">"lowest_model_level"</span><span data-if="python" style="display:none">"lowest_model_level"</span>, <span data-if="hdevelop" style="display:inline">'metric'</span><span data-if="c" style="display:none">"metric"</span><span data-if="cpp" style="display:none">"metric"</span><span data-if="com" style="display:none">"metric"</span><span data-if="dotnet" style="display:none">"metric"</span><span data-if="python" style="display:none">"metric"</span>, <span data-if="hdevelop" style="display:inline">'min_face_angle'</span><span data-if="c" style="display:none">"min_face_angle"</span><span data-if="cpp" style="display:none">"min_face_angle"</span><span data-if="com" style="display:none">"min_face_angle"</span><span data-if="dotnet" style="display:none">"min_face_angle"</span><span data-if="python" style="display:none">"min_face_angle"</span>, <span data-if="hdevelop" style="display:inline">'min_size'</span><span data-if="c" style="display:none">"min_size"</span><span data-if="cpp" style="display:none">"min_size"</span><span data-if="com" style="display:none">"min_size"</span><span data-if="dotnet" style="display:none">"min_size"</span><span data-if="python" style="display:none">"min_size"</span>, <span data-if="hdevelop" style="display:inline">'model_tolerance'</span><span data-if="c" style="display:none">"model_tolerance"</span><span data-if="cpp" style="display:none">"model_tolerance"</span><span data-if="com" style="display:none">"model_tolerance"</span><span data-if="dotnet" style="display:none">"model_tolerance"</span><span data-if="python" style="display:none">"model_tolerance"</span>, <span data-if="hdevelop" style="display:inline">'num_levels'</span><span data-if="c" style="display:none">"num_levels"</span><span data-if="cpp" style="display:none">"num_levels"</span><span data-if="com" style="display:none">"num_levels"</span><span data-if="dotnet" style="display:none">"num_levels"</span><span data-if="python" style="display:none">"num_levels"</span>, <span data-if="hdevelop" style="display:inline">'optimization'</span><span data-if="c" style="display:none">"optimization"</span><span data-if="cpp" style="display:none">"optimization"</span><span data-if="com" style="display:none">"optimization"</span><span data-if="dotnet" style="display:none">"optimization"</span><span data-if="python" style="display:none">"optimization"</span>, <span data-if="hdevelop" style="display:inline">'part_size'</span><span data-if="c" style="display:none">"part_size"</span><span data-if="cpp" style="display:none">"part_size"</span><span data-if="com" style="display:none">"part_size"</span><span data-if="dotnet" style="display:none">"part_size"</span><span data-if="python" style="display:none">"part_size"</span>, <span data-if="hdevelop" style="display:inline">'union_adjacent_contours'</span><span data-if="c" style="display:none">"union_adjacent_contours"</span><span data-if="cpp" style="display:none">"union_adjacent_contours"</span><span data-if="com" style="display:none">"union_adjacent_contours"</span><span data-if="dotnet" style="display:none">"union_adjacent_contours"</span><span data-if="python" style="display:none">"union_adjacent_contours"</span></p>
</div>
  <div class="par">
<div class="parhead">
<span id="GenParamValue" class="parname"><b><code><span data-if="hdevelop" style="display:inline">GenParamValue</span><span data-if="c" style="display:none">GenParamValue</span><span data-if="cpp" style="display:none">GenParamValue</span><span data-if="com" style="display:none">GenParamValue</span><span data-if="dotnet" style="display:none">genParamValue</span><span data-if="python" style="display:none">gen_param_value</span></code></b> (input_control)  </span><span>attribute.name(-array) <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">MaybeSequence[Union[int, float, str]]</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (integer / </span><span data-if="hdevelop" style="display:inline">real / </span><span data-if="hdevelop" style="display:inline">string)</span><span data-if="dotnet" style="display:none"> (<i>int</i> / </span><span data-if="dotnet" style="display:none">long / </span><span data-if="dotnet" style="display:none">double / </span><span data-if="dotnet" style="display:none">string)</span><span data-if="cpp" style="display:none"> (<i>Hlong</i> / </span><span data-if="cpp" style="display:none">double / </span><span data-if="cpp" style="display:none">HString)</span><span data-if="c" style="display:none"> (<i>Hlong</i> / </span><span data-if="c" style="display:none">double / </span><span data-if="c" style="display:none">char*)</span></span>
</div>
<p class="pardesc">Values of the optional generic parameters.</p>
<p class="pardesc"><span class="parcat">Default:
      </span>[]</p>
<p class="pardesc"><span class="parcat">Suggested values:
      </span>0, 1, 2, 3, 4, 6, 8, 10, <span data-if="hdevelop" style="display:inline">'auto'</span><span data-if="c" style="display:none">"auto"</span><span data-if="cpp" style="display:none">"auto"</span><span data-if="com" style="display:none">"auto"</span><span data-if="dotnet" style="display:none">"auto"</span><span data-if="python" style="display:none">"auto"</span>, <span data-if="hdevelop" style="display:inline">'none'</span><span data-if="c" style="display:none">"none"</span><span data-if="cpp" style="display:none">"none"</span><span data-if="com" style="display:none">"none"</span><span data-if="dotnet" style="display:none">"none"</span><span data-if="python" style="display:none">"none"</span>, <span data-if="hdevelop" style="display:inline">'point_reduction_low'</span><span data-if="c" style="display:none">"point_reduction_low"</span><span data-if="cpp" style="display:none">"point_reduction_low"</span><span data-if="com" style="display:none">"point_reduction_low"</span><span data-if="dotnet" style="display:none">"point_reduction_low"</span><span data-if="python" style="display:none">"point_reduction_low"</span>, <span data-if="hdevelop" style="display:inline">'point_reduction_medium'</span><span data-if="c" style="display:none">"point_reduction_medium"</span><span data-if="cpp" style="display:none">"point_reduction_medium"</span><span data-if="com" style="display:none">"point_reduction_medium"</span><span data-if="dotnet" style="display:none">"point_reduction_medium"</span><span data-if="python" style="display:none">"point_reduction_medium"</span>, <span data-if="hdevelop" style="display:inline">'point_reduction_high'</span><span data-if="c" style="display:none">"point_reduction_high"</span><span data-if="cpp" style="display:none">"point_reduction_high"</span><span data-if="com" style="display:none">"point_reduction_high"</span><span data-if="dotnet" style="display:none">"point_reduction_high"</span><span data-if="python" style="display:none">"point_reduction_high"</span>, 0.1, 0.2, 0.3, <span data-if="hdevelop" style="display:inline">'ignore_local_polarity'</span><span data-if="c" style="display:none">"ignore_local_polarity"</span><span data-if="cpp" style="display:none">"ignore_local_polarity"</span><span data-if="com" style="display:none">"ignore_local_polarity"</span><span data-if="dotnet" style="display:none">"ignore_local_polarity"</span><span data-if="python" style="display:none">"ignore_local_polarity"</span>, <span data-if="hdevelop" style="display:inline">'ignore_part_polarity'</span><span data-if="c" style="display:none">"ignore_part_polarity"</span><span data-if="cpp" style="display:none">"ignore_part_polarity"</span><span data-if="com" style="display:none">"ignore_part_polarity"</span><span data-if="dotnet" style="display:none">"ignore_part_polarity"</span><span data-if="python" style="display:none">"ignore_part_polarity"</span>, <span data-if="hdevelop" style="display:inline">'true'</span><span data-if="c" style="display:none">"true"</span><span data-if="cpp" style="display:none">"true"</span><span data-if="com" style="display:none">"true"</span><span data-if="dotnet" style="display:none">"true"</span><span data-if="python" style="display:none">"true"</span>, <span data-if="hdevelop" style="display:inline">'false'</span><span data-if="c" style="display:none">"false"</span><span data-if="cpp" style="display:none">"false"</span><span data-if="com" style="display:none">"false"</span><span data-if="dotnet" style="display:none">"false"</span><span data-if="python" style="display:none">"false"</span></p>
</div>
  <div class="par">
<div class="parhead">
<span id="ShapeModel3DID" class="parname"><b><code><span data-if="hdevelop" style="display:inline">ShapeModel3DID</span><span data-if="c" style="display:none">ShapeModel3DID</span><span data-if="cpp" style="display:none">ShapeModel3DID</span><span data-if="com" style="display:none">ShapeModel3DID</span><span data-if="dotnet" style="display:none">shapeModel3DID</span><span data-if="python" style="display:none">shape_model_3did</span></code></b> (output_control)  </span><span>shape_model_3d <code>→</code> <span data-if="dotnet" style="display:none"><a href="HShapeModel3D.html">HShapeModel3D</a>, </span><span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">HHandle</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (handle)</span><span data-if="dotnet" style="display:none"> (<i>IntPtr</i>)</span><span data-if="cpp" style="display:none"> (<i>HHandle</i>)</span><span data-if="c" style="display:none"> (<i>handle</i>)</span></span>
</div>
<p class="pardesc">Handle of the 3D shape model.</p>
</div>
<h2 id="sec_result">结果</h2>
<p>如果参数均有效，算子
<code><span data-if="hdevelop" style="display:inline">create_shape_model_3d</span><span data-if="c" style="display:none">create_shape_model_3d</span><span data-if="cpp" style="display:none">CreateShapeModel3d</span><span data-if="com" style="display:none">CreateShapeModel3d</span><span data-if="dotnet" style="display:none">CreateShapeModel3d</span><span data-if="python" style="display:none">create_shape_model_3d</span></code> 返回值 <TT>2</TT> (
      <TT>H_MSG_TRUE</TT>)
    .  If necessary
an exception is raised.  If the parameters are chosen such that all
model views contain too few points, the error 8510 is raised. In the
case that the projected model is bigger than twice the image size in
at least one model view, the error 8910 is raised.</p>
<h2 id="sec_predecessors">可能的前置算子</h2>
<p>
<code><a href="read_object_model_3d.html"><span data-if="hdevelop" style="display:inline">read_object_model_3d</span><span data-if="c" style="display:none">read_object_model_3d</span><span data-if="cpp" style="display:none">ReadObjectModel3d</span><span data-if="com" style="display:none">ReadObjectModel3d</span><span data-if="dotnet" style="display:none">ReadObjectModel3d</span><span data-if="python" style="display:none">read_object_model_3d</span></a></code>, 
<code><a href="project_object_model_3d.html"><span data-if="hdevelop" style="display:inline">project_object_model_3d</span><span data-if="c" style="display:none">project_object_model_3d</span><span data-if="cpp" style="display:none">ProjectObjectModel3d</span><span data-if="com" style="display:none">ProjectObjectModel3d</span><span data-if="dotnet" style="display:none">ProjectObjectModel3d</span><span data-if="python" style="display:none">project_object_model_3d</span></a></code>, 
<code><a href="get_object_model_3d_params.html"><span data-if="hdevelop" style="display:inline">get_object_model_3d_params</span><span data-if="c" style="display:none">get_object_model_3d_params</span><span data-if="cpp" style="display:none">GetObjectModel3dParams</span><span data-if="com" style="display:none">GetObjectModel3dParams</span><span data-if="dotnet" style="display:none">GetObjectModel3dParams</span><span data-if="python" style="display:none">get_object_model_3d_params</span></a></code>
</p>
<h2 id="sec_successors">可能的后置算子</h2>
<p>
<code><a href="find_shape_model_3d.html"><span data-if="hdevelop" style="display:inline">find_shape_model_3d</span><span data-if="c" style="display:none">find_shape_model_3d</span><span data-if="cpp" style="display:none">FindShapeModel3d</span><span data-if="com" style="display:none">FindShapeModel3d</span><span data-if="dotnet" style="display:none">FindShapeModel3d</span><span data-if="python" style="display:none">find_shape_model_3d</span></a></code>, 
<code><a href="write_shape_model_3d.html"><span data-if="hdevelop" style="display:inline">write_shape_model_3d</span><span data-if="c" style="display:none">write_shape_model_3d</span><span data-if="cpp" style="display:none">WriteShapeModel3d</span><span data-if="com" style="display:none">WriteShapeModel3d</span><span data-if="dotnet" style="display:none">WriteShapeModel3d</span><span data-if="python" style="display:none">write_shape_model_3d</span></a></code>, 
<code><a href="project_shape_model_3d.html"><span data-if="hdevelop" style="display:inline">project_shape_model_3d</span><span data-if="c" style="display:none">project_shape_model_3d</span><span data-if="cpp" style="display:none">ProjectShapeModel3d</span><span data-if="com" style="display:none">ProjectShapeModel3d</span><span data-if="dotnet" style="display:none">ProjectShapeModel3d</span><span data-if="python" style="display:none">project_shape_model_3d</span></a></code>, 
<code><a href="get_shape_model_3d_params.html"><span data-if="hdevelop" style="display:inline">get_shape_model_3d_params</span><span data-if="c" style="display:none">get_shape_model_3d_params</span><span data-if="cpp" style="display:none">GetShapeModel3dParams</span><span data-if="com" style="display:none">GetShapeModel3dParams</span><span data-if="dotnet" style="display:none">GetShapeModel3dParams</span><span data-if="python" style="display:none">get_shape_model_3d_params</span></a></code>, 
<code><a href="get_shape_model_3d_contours.html"><span data-if="hdevelop" style="display:inline">get_shape_model_3d_contours</span><span data-if="c" style="display:none">get_shape_model_3d_contours</span><span data-if="cpp" style="display:none">GetShapeModel3dContours</span><span data-if="com" style="display:none">GetShapeModel3dContours</span><span data-if="dotnet" style="display:none">GetShapeModel3dContours</span><span data-if="python" style="display:none">get_shape_model_3d_contours</span></a></code>
</p>
<h2 id="sec_see">参考其它</h2>
<p>
<code><a href="convert_point_3d_cart_to_spher.html"><span data-if="hdevelop" style="display:inline">convert_point_3d_cart_to_spher</span><span data-if="c" style="display:none">convert_point_3d_cart_to_spher</span><span data-if="cpp" style="display:none">ConvertPoint3dCartToSpher</span><span data-if="com" style="display:none">ConvertPoint3dCartToSpher</span><span data-if="dotnet" style="display:none">ConvertPoint3dCartToSpher</span><span data-if="python" style="display:none">convert_point_3d_cart_to_spher</span></a></code>, 
<code><a href="convert_point_3d_spher_to_cart.html"><span data-if="hdevelop" style="display:inline">convert_point_3d_spher_to_cart</span><span data-if="c" style="display:none">convert_point_3d_spher_to_cart</span><span data-if="cpp" style="display:none">ConvertPoint3dSpherToCart</span><span data-if="com" style="display:none">ConvertPoint3dSpherToCart</span><span data-if="dotnet" style="display:none">ConvertPoint3dSpherToCart</span><span data-if="python" style="display:none">convert_point_3d_spher_to_cart</span></a></code>, 
<code><a href="create_cam_pose_look_at_point.html"><span data-if="hdevelop" style="display:inline">create_cam_pose_look_at_point</span><span data-if="c" style="display:none">create_cam_pose_look_at_point</span><span data-if="cpp" style="display:none">CreateCamPoseLookAtPoint</span><span data-if="com" style="display:none">CreateCamPoseLookAtPoint</span><span data-if="dotnet" style="display:none">CreateCamPoseLookAtPoint</span><span data-if="python" style="display:none">create_cam_pose_look_at_point</span></a></code>, 
<code><a href="trans_pose_shape_model_3d.html"><span data-if="hdevelop" style="display:inline">trans_pose_shape_model_3d</span><span data-if="c" style="display:none">trans_pose_shape_model_3d</span><span data-if="cpp" style="display:none">TransPoseShapeModel3d</span><span data-if="com" style="display:none">TransPoseShapeModel3d</span><span data-if="dotnet" style="display:none">TransPoseShapeModel3d</span><span data-if="python" style="display:none">trans_pose_shape_model_3d</span></a></code>
</p>
<h2 id="sec_references">References</h2>
<p>

Markus Ulrich, Christian Wiedemann, Carsten Steger, “Combining
Scale-Space and Similarity-Based Aspect Graphs for Fast 3D Object
Recognition,” IEEE Transactions on Pattern Analysis and Machine
Intelligence, pp. 1902-1914, Oct., 2012.

</p>
<h2 id="sec_module">模块</h2>
<p>
3D Metrology</p>
<!--OP_REF_FOOTER_START-->
<hr>
<div class="indexlink">
<a href="index_classes.html"><span data-if="dotnet" style="display:none;">类别</span><span data-if="cpp" style="display:none;">类别</span></a><span data-if="dotnet" style="display:none;"> | </span><span data-if="cpp" style="display:none;"> | </span><a href="index_by_name.html">算子列表</a>
</div>
<div class="footer">
<div class="copyright">HALCON算子参考手册 Copyright © 2015-2023 51Halcon</div>
</div>
</div>
</body>
</html>
